v1.16.0 - Lossing data when one node of the cluster is lost

Describe the bug
I open this issue to clarify if what I see is correct and must be solve by the user in some way, or is a bug.
The specific configuration that i have tested:

3 nodes of Kafka v3.0 based on confluentinc/cp-kafka docker images. All of them with this configuration:

KAFKA_DEFAULT_REPLICATION_FACTOR: 3
KAFKA_NUM_PARTITIONS: 3
KAFKA_OFFSETS_COMMIT_REQUIRED_ACKS: -1
KAFKA_MIN_INSYNC_REPLICAS: 2
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2

A single producer that try to write 60 records every 5 seconds with send method. The configuration of this producer is:

Client:

{
  clientId: 'creator',
  brokers: ['localhost:9092', 'localhost:9093', 'localhost:9093'],
  enforceRequestTimeout: true,
  requestTimeout: 3000,
  connectionTimeout: 3000,
}

Producer:

{
  maxInFlightRequests: 1,
  transactionalId: 'my-transactional-producer',
  idempotent: true,
  transactionTimeout: 3000,
  retry: { retries: Number.MAX_SAFE_INTEGER },
}

I log every job (the result of a send process) and in the normal operation I can see something like:
The size of the test is: 60
{"level":"ERROR","timestamp":"2022-02-28T09:28:59.133Z","logger":"kafkajs","message":"[Connection] Response Metadata(key: 3, version: 6)","broker":"localhost:9092","clientId":"creator","error":"There is no leader for this topic-partition as we are in the middle of a leadership election","correlationId":2,"size":123}
[
  {
    "topicName": "myTopic",
    "partition": 0,
    "errorCode": 0,
    "baseOffset": "0",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 1,
    "errorCode": 0,
    "baseOffset": "0",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 2,
    "errorCode": 0,
    "baseOffset": "0",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  }
]
OPERATION 1 - 60/600
dbsave: 1.090s
The size of the test is: 60
[
  {
    "topicName": "myTopic",
    "partition": 0,
    "errorCode": 0,
    "baseOffset": "20",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 1,
    "errorCode": 0,
    "baseOffset": "20",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 2,
    "errorCode": 0,
    "baseOffset": "20",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  }
]
OPERATION 2 - 120/600
dbsave: 25.286ms

In the middle of the test I stop one of the servers (not the controller of the cluster) with docker stop 85fsa..., and in the most of cases, not always, this is the log that i receive:
The size of the test is: 60
{"level":"ERROR","timestamp":"2022-02-28T09:29:09.132Z","logger":"kafkajs","message":"[Producer] Failed to send messages: Closed connection","retryCount":0,"retryTime":243}
[
  {
    "topicName": "myTopic",
    "partition": 0,
    "errorCode": 0,
    "baseOffset": "40",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 2,
    "errorCode": 0,
    "baseOffset": "40",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  }
]
OPERATION 3 - 180/600
dbsave: 1.262s
The size of the test is: 60
[
  {
    "topicName": "myTopic",
    "partition": 0,
    "errorCode": 0,
    "baseOffset": "60",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 1,
    "errorCode": 0,
    "baseOffset": "40",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 2,
    "errorCode": 0,
    "baseOffset": "60",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  }
]
OPERATION 4 - 240/600
dbsave: 9.988ms

As you can see the send to one of the servers failed, but the send method resolved with the response of only 2 server, and the send its not retried.
In the last job process you can see that the final result is that we have lost 20 messages without warning from the library:
The size of the test is: 60
[
  {
    "topicName": "myTopic",
    "partition": 0,
    "errorCode": 0,
    "baseOffset": "180",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 1,
    "errorCode": 0,
    "baseOffset": "160",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  },
  {
    "topicName": "myTopic",
    "partition": 2,
    "errorCode": 0,
    "baseOffset": "180",
    "logAppendTime": "-1",
    "logStartOffset": "0"
  }
]
OPERATION 10 - 600/600
dbsave: 7.462ms

The snipped of code that I use to reproduce this behaviour is:
import { Kafka, Message } from 'kafkajs';
import fs from 'fs';

var access = fs.createWriteStream('test.log');
//@ts-ignore ignore is a test
process.stdout.write = process.stderr.write = access.write.bind(access);

function createMessages(from: number, to: number): Message[] {
  const messages: Message[] = [];
  for (let index = from; index < to; index += 1) {
    messages.push({ value: JSON.stringify({ index }) });
  }
  return messages;
}
const client = new Kafka({
  clientId: 'creator',
  brokers: ['localhost:9092', 'localhost:9093', 'localhost:9093'],
  enforceRequestTimeout: true,
  requestTimeout: 3000,
  connectionTimeout: 3000,
});
const producer = client.producer({
  maxInFlightRequests: 1,
  transactionalId: 'my-transactional-producer',
  idempotent: true,
  transactionTimeout: 3000,
  retry: { retries: Number.MAX_SAFE_INTEGER },
});
const consumer = client.consumer({ groupId: 'myGroup' });

(async () => {
  await producer.connect();
  await consumer.connect();
})();

let pending = false;
let consuming = false;
let count = 0;
let aggregatedValue = 0;
let messagesCount = 0;
const messageBatchSize = 60;
const messageFinalAmount = 60 * 10;
const expectedResult = (messageFinalAmount * (messageFinalAmount - 1)) / 2;

console.log(`The final result should be ${expectedResult}`);

setInterval(async () => {
  if (count === messageFinalAmount / messageBatchSize && !consuming) {
    await consumer.subscribe({ topic: 'myTopic', fromBeginning: true });
    await consumer.run({
      eachMessage: async ({ message }) => {
        if (!message.value) {
          throw new Error(`TEST IS BROKEN`);
        }
        const value = JSON.parse(message.value.toString()).index;
        aggregatedValue = aggregatedValue + value;
        console.log(
          `${value} - ${aggregatedValue} - ${
            aggregatedValue === expectedResult ? 'ALL MESSAGE HAS BEEN RECEIVED' : 'PENDING ...'
          }`
        );
      },
    });
    consuming = true;
    return;
  }
  if (pending || consuming) {
    return;
  }
  const messages = createMessages(messagesCount, messagesCount + messageBatchSize);
  console.log(`The size of the test is: ${messages.length}`);
  console.time('dbsave');
  pending = true;
  try {
    const result = await producer.send({ topic: 'myTopic', acks: -1, messages, timeout: 3000 });
    console.log(JSON.stringify(result, null, 2));
    count++;
    messagesCount += messageBatchSize;
    console.log(`OPERATION ${count} - ${messagesCount}/${messageFinalAmount}`);
    console.timeEnd('dbsave');
    pending = false;
  } catch (error) {
    console.log(`ERROR IN OPERATION ${error.message}`);
    console.timeEnd('dbsave');
    pending = false;
  }
}, 5000);

And the docker-compose file:
version: '3.8'
services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:latest
    ports:
      - '32181:32181'
    environment:
      ZOOKEEPER_CLIENT_PORT: 32181
      ZOOKEEPER_TICK_TIME: 2000
  kafka-1:
    image: confluentinc/cp-kafka:latest
    ports:
      - '9092:9092'
    depends_on:
      - zookeeper-1
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-1:29092,EXTERNAL://localhost:9092
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_OFFSETS_COMMIT_REQUIRED_ACKS: -1
      KAFKA_MIN_INSYNC_REPLICAS: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
  kafka-2:
    image: confluentinc/cp-kafka:latest
    ports:
      - '9093:9093'
    depends_on:
      - zookeeper-1
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-2:29093,EXTERNAL://localhost:9093
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_OFFSETS_COMMIT_REQUIRED_ACKS: -1
      KAFKA_MIN_INSYNC_REPLICAS: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
  kafka-3:
    image: confluentinc/cp-kafka:latest
    ports:
      - '9094:9094'
    depends_on:
      - zookeeper-1
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ZOOKEEPER_CONNECT: zookeeper-1:32181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-3:29094,EXTERNAL://localhost:9094
      KAFKA_DEFAULT_REPLICATION_FACTOR: 3
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_OFFSETS_COMMIT_REQUIRED_ACKS: -1
      KAFKA_MIN_INSYNC_REPLICAS: 2
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 2
  kowl:
    image: quay.io/cloudhut/kowl:master
    depends_on:
      - zookeeper-1
      - kafka-1
      - kafka-2
      - kafka-3
    environment:
      KAFKA_BROKERS: kafka-1:29092,kafka-2:29093, kafka-3:29094
    ports:
      - "8080:8080"

Expected behavior
I expect the method rejects with an error in order to retry the operations by my shelve or try to find the server that its the responsible of the partition now.
Observed behavior
Even one of the servers fails in the middle of the process of sending new records to the cluster, the send method resolves without error and the data is lost.
Environment:

OS: Linux Ubuntu 20.04
KafkaJS version: 1.16.0 and 1.15.0
Kafka version: 3.0
NodeJS version: 14.18.2

Hi there,
I've debugged a little bit more the issue, I don't know the code enough well, but I think I have found where is the problem.
In the sendMessages file, the responses of the brokers is tracked by the Map responsePerBroker.
https://github.com/tulios/kafkajs/blob/1876abcb5effd6183c1fbaa50dee9cef269b67a5/src/producer/sendMessages.js#L20-L26
If the request is fulfilled, the response is setted, but if there is a failure in the response, the response from the broker is deleted.
https://github.com/tulios/kafkajs/blob/1876abcb5effd6183c1fbaa50dee9cef269b67a5/src/producer/sendMessages.js#L116-L121
This logic is okey when you have a problem is the communication, but the broker is still there. For that cases where the broker is lost (from 3 brokers in a cluster to 2), in the next retry of the createProducerRequests no request will be performed, due too right now we have only 2 brokers and both of them has an answer in the map responsePerBroker (brokersWithoutResponse will be empty).
https://github.com/tulios/kafkajs/blob/1876abcb5effd6183c1fbaa50dee9cef269b67a5/src/producer/sendMessages.js#L65-L69
So, the Promise.all() will be resolved without any code execution and the sendMessages function will return the result of the previous iteration.
https://github.com/tulios/kafkajs/blob/1876abcb5effd6183c1fbaa50dee9cef269b67a5/src/producer/sendMessages.js#L132-L136
I think this logic should be based in partitiions instead of brokers.
Let me know your thoughts

This is clearly a bug.

I think this logic should be based in partitiions instead of brokers.

So if your analysis is correct, then I suppose what's needed is to during retries detect that we still have outstanding partitions to produce to, check who the new leader for that partition is and then issue new requests.
I'm not sure about the cluster behavior during this operation though. If it's a graceful shutdown of a broker in the cluster, I would expect leadership to change to one of the other brokers, in which case the above approach should work, but if it's an ungraceful shutdown I'm not sure that this will make a difference because the automatic leadership rebalance only kicks in after 5 minutes by default. Regardless, at least we should be able to throw a meaningful error in the case we can't find a leader for the partition, rather than silently fail as is the case currently.

Hi @Nevon,
As you say there will be a complete different behaviour depending on the server "shutdown style".
A possible solution is to change the resolve response of the send function adding a list the messages that were commited and not, in that way the user can retry to send the uncommited messages by himself. In the second try, if the cluster is able to receive the messages (even with one server less), you will be able to send all the messages or receive a new error with a clear message of the actual problem.
This is the way that some SDKs use to solve this kind of issues.
For example this is the response of AWS SDK for Kinesis Client or Firehose Client:
{
    "FailedRecordCount": 2,
    "Records": [
        {
            "SequenceNumber": "49543463076548007577105092703039560359975228518395012686",
            "ShardId": "shardId-000000000000"
        },
        {
            "ErrorCode": "ProvisionedThroughputExceededException",
            "ErrorMessage": "Rate exceeded for shard shardId-000000000001 in stream exampleStreamName under account<PHONE_NUMBER>11."
        },
        {
            "ErrorCode": "InternalFailure",
            "ErrorMessage": "Internal service failure."
        }
    ]
}

Of course we must the select the correct format to be sure that we don't broke any previous implementation.

I think if we have any failures that we couldn't handle, we should reject producer.send. We have similar situations with other operations that do multiple things towards multiple brokers, where the operation can partially fail. For example, admin.createTopics can succeed for one topic and fail for another. #1104 is a good example of how we handle that. I think we could do something similar for this.

If the producer.send is rejected, the user will try to retry the complete "job", so in the most of the cases some messages will be commited twice, something that it's not the ideal situation.

Check it out, this issue has come up before #43. Let's use that instead.

Actually, nevermind, this deserves its own issue. Part of it is to communicate the partial failure better to the user, but another part is handling the error to begin with.

As extended error classes are currently be using in the code, we have to decide if the correct approach is to resolve with more info or maybe, reject with a special error.
At the same time, we should use Promise.allSettled()instead of Promise.all(), to be sure that we control which messages were commited, here we need to take into account that Nodejs 12.9.0 will be necessary.

There is a all settled() implementation in /utils.
On Thu, 10 Mar 2022, 23:09 Carlos Jiménez Saiz, @.***>
wrote:

As extended error classes are currently be using in the code, we have to
decide if the correct approach is to resolve with more info or maybe,
reject with a special error.
At the same time, we should use Promise.allSettled()instead of
Promise.all(), to be sure that we control which messages were commited,
here we need to take into account that Nodejs 12.9.0 will be necessary.
—
Reply to this email directly, view it on GitHub
https://github.com/tulios/kafkajs/issues/1303#issuecomment-1064164351,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABDLW5T2IF327FH7TXLIB7LU7IGD7ANCNFSM5PQWJ33A
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hi,
We also faced this problem, and it is critical for us. I would like to fix it if you don't mind.

Hi, no problem from my side, I have sudden rush of work and I have deferred this task with no forecast date

Sorry, any movement on this? Sounds like something that might happen on any production system that uses this library

So basically this issue means that one a node is done (like when MSK clusters go through security patches, which are frequent) we may end up losing messages?

@eladchen Yes

Any update on this? We are also facing this critical issue


how to support 'Project management' ?

Hi, there
Thanks for your effort on the amazing tool.
I successfully deploy the server using the git repo master branch.
But I did NOT see the 'Project management'  cascading button on the homepage as shown in the labelstudio.io website.

This function is very integral for me.
Which branch should I refer to?

Hi, you need to start LS in mutli-session mode:
label-studio start-multi-session

Nice. It works!


fix: gradient text copied code

🛠 Fixes Issue
Closes #252
👨💻 Changes proposed

removed extra single-inverted-commas from Gradient text code syntax

✔ Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

📷 Screenshots
Before

After

:tada: This PR is included in version 2.9.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Jump to cursor doesn't seem to work when debugging cells

Bug: Notebook Editor, Interactive Window, Editor cells

Steps to cause the bug to occur

Start debugging a cell
Step over a bit, then right click on a few lines behind and select "Jump to Cursor"

Actual behavior

Your Jupyter and/or Python environment
Please provide as much info as you readily know

Jupyter server running: Local
Extension version: 2020.5.76036-dev
VS Code version: 1.44.2
Python and/or Anaconda version: Python 3.8.0 32 bit
OS: Windows
Virtual environment: venv

Developer Tools Console Output

Microsoft Data Science for VS Code Engineering Team: @rchiodo, @IanMatthewHuff, @DavidKutu, @DonJayamanne, @greazer

I believe this would be a debugger feature, not something we'd take care of. We don't control the stepping commands.


Alpha channel heuristic when not using ImageWorker doesn't deal with uppercase file extensions

I tried loading an externally supplied file with .PNG extension, and the alpha channel wasn't clear.
It seems that the heuristic is to just look at the file path, whereas the ImageWorker detects mime types.
That said, there is a flag hasAlpha which the ImageWorker subsequently ignores.
Should the non-worker based code path use a FileReader and do mime type detection as well, or is that too much of a performance hit? At the very least the heuristic string comparison should ignore case.
Looking into this, the code responsible here is this line:
https://github.com/rdkcentral/Lightning/blob/master/src/platforms/browser/WebPlatform.mjs#L270

@wouterlucas Great work.
Do you think the image worker ignoring the hasAlpha flag is a potential issue?

During my tests it didn’t seem to ignore the hasAlpha flag on the function itself.
This might be higher up the chain if that is the case, I can look into it but suggest we move this along for the next release.

I don't think it's super important. Just saw this as a discrepancy.
Maybe I didn't explain what I meant correctly:
When providing the hasAlpha flag to the actual component, it is overriding the heuristic outcome when not running in a worker, but ignored when the worker finishes.
Instead, on worker execution, the hasAlphaChannel result is the only value that is acknowledged.

ah yes, thanks for clarifying. It indeed seems to be ignored on the image worker because it relies on the mimeType:
https://github.com/rdkcentral/Lightning/blob/master/src/platforms/browser/ImageWorker.mjs#L306
Although I agree that doesn't make sense and it should probably be included when evaluating the alpha also on the image worker. I do think the mimeType itself is solid way to check for the alpha channel, not sure if having an override is necessary at this point.

It is certainly awkward when image URLs don't include .png somewhere... so we add #.png to the URL in places where we know we want the image to be transparent...


[TS migration] Migrate 'ValuePicker' component to TypeScript

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/31965
PROPOSAL:
Tests

[x] Verify that no errors appear in the JS console

Log in to app
Click "+" icon
Select "Start Chat"
Pick "Room" from top bar
Try to change eg. visibility field
Check if everything is ok

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

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

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@situchan - conflicts resolved

Thanks. I will complete review tomorrow

@situchan kind bump :)

@filip-solecki conflicts again

@situchan - please re-review

@situchan please finish review asap - there are conflicts really often that I have to resolve

on this right now

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/Gonals in version: 1.4.43-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/puneetlath in version: 1.4.43-20 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


⚠ Bofrost.be has degraded performance

In f4b7441, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1575 ms

Resolved: Bofrost.be performance has improved in 0ec9b4e.


web3 providers

brownie Version: latest master
ganache-cli Version: Ganache CLI v6.7.0 (ganache-core: 2.8.0)
solc Version: 0.4.24+commit.e67f0147.Darwin.appleclang
Python Version: 3.7.3
OS: osx
web3 version: '5.3.0'
What was wrong?
ImportError while loading conftest '/Users/ben/projects/poly/brownie/tests/conftest.py'.
tests/conftest.py:15: in <module>
    import brownie
/usr/local/lib/python3.7/site-packages/brownie/__init__.py:3: in <module>
    from brownie.network import (
/usr/local/lib/python3.7/site-packages/brownie/network/__init__.py:6: in <module>
    from .rpc import Rpc as _Rpc
/usr/local/lib/python3.7/site-packages/brownie/network/rpc.py:15: in <module>
    web3 = Web3()
/usr/local/lib/python3.7/site-packages/brownie/types/types.py:252: in __call__
    cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
/usr/local/lib/python3.7/site-packages/brownie/network/web3.py:20: in __init__
    self.providers.clear()
E   AttributeError: 'Web3' object has no attribute 'providers'

It looks like you're using an old version of brownie - web3.providers is from v4 of web3.py. The last line in the traceback you posted was changed in  https://github.com/iamdefinitelyahuman/brownie/commit/06864eaaaa23b213432bbe6dea694359e9d0b77f.

reinstall worked, not sure why


gdu: 5.1.0 -> 5.1.1

Motivation for this change
Upstream fixes the tests that were failing, so tests can be re-enabled (dundee/gdu#58)
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 127810 at f18a4cfd run on aarch64-linux 1

1 package built successfully:

gdu

1 suggestion:

warning: unused-argument
Unused argument: stdenv.
Near pkgs/tools/system/gdu/default.nix:2:3:
  |
2 | , stdenv
  |   ^

Result of nixpkgs-review pr 127810 run on x86_64-linux 1

1 package built:

gdu

Looks like the Darwin failures are unrelated. Aarch64 was also disabled at one point, but that seems to have been due to the now-fixed failure, so I left that on, and disabled Darwin.

Result of nixpkgs-review pr 127810 run on x86_64-linux 1

1 package built:

gdu


Clean tags in user submission

Someone put a bunch of enters in and it was really sad for the CSV. We should strip_tags on this field before we save it.

[ ] User Signup Data Form (per screenshot above)
[ ] Reportback Form

This is problematic when a user is updating their Reportback submission. The form loads the stripped content, and then is saved with weird characters. See https://github.com/DoSomething/dosomething/pull/3716


Still I face the same issue that When startWeekOnSunday is set to true, the date in the Week view is shifted by a day. Can someone help me?

          Still I face the same issue that When startWeekOnSunday is set to true, the date in the Week view is shifted by a day. Can someone help me?

Originally posted by @elavarasan-star in https://github.com/antoniandre/vue-cal/issues/505#issuecomment-1427767476

I am having the same issue.

Same issue. Seems like the PRs are not merged.


how can I install this on debian9

when I run make  on debian9, the error is "modprobe:FATAL:Module ec_sys not found in directory". How can this program adjust to install on debian. As far as I see, debian and ubuntu have much in common.

I tried this on Debian as well, and received the same error as yangzhi did. I would love if this worked for Debian.

Just for the record, it's on bugs.debian.org.
The Debian's kernel doesn't embed the module ec_sys because it may be part of debugging tools.

Just for the record, it's on bugs.debian.org.
The Debian's kernel doesn't embed the module ec_sys because it may be part of debugging tools.


Nswag 14 CLI /runtime argument not running with Net80

Runtime specified in nswag.json as "Net80".

Not quite sure if it's needed in both places, but did it to make sure.
Then run the Nswag CLI tool (npm i -g nswag@14) run command:
> nswag run ..\..\..\WebServiceProjects\WebService.PortalApi\nswag.json

NSwag NPM CLI
NSwag command line tool for .NET Core Net70, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
Visit http://NSwag.org for more information.
NSwag bin directory: C:\Users\Dylan\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin\binaries\Net80

Executing file '..\..\..\WebServiceProjects\WebService.PortalApi\nswag.json' with variables ''...
System.InvalidOperationException: The specified runtime in the document (Net80) differs from the current process runtime (Net70). Change the runtime with the '/runtime:Net80' parameter or run the file with the correct command line binary.
   at NSwag.Commands.Document.ExecuteDocumentCommand.ExecuteDocumentAsync(IConsoleHost host, String filePath) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 69
   at NSwag.Commands.Document.ExecuteDocumentCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 33
   at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)
   at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)
   at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 62node:child_process:965
    throw err;
    ^

Error: Command failed: dotnet "C:\Users\Dylan\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin/binaries/Net80/dotnet-nswag.dll" run ..\..\..\WebServiceProjects\WebService.PortalApi\nswag.json
    at checkExecSyncError (node:child_process:890:11)
    at Object.execSync (node:child_process:962:15)
    at C:\Users\DylanvanderMerwe\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin\nswag.js:64:27
    at ChildProcess.exithandler (node:child_process:414:7)
    at ChildProcess.emit (node:events:517:28)
    at maybeClose (node:internal/child_process:1098:16)
    at ChildProcess._handle.onexit (node:internal/child_process:303:5) {
  status:<PHONE_NUMBER>,
  signal: null,
  output: [ null, null, null ],
  pid: 73448,
  stdout: null,
  stderr: null
}

Alright then let's set the /runtime parameter with the CLI:
> nswag run ..\..\..\WebServiceProjects\WebService.PortalApi\nswag.json /runtime:Net80

NSwag NPM CLI
NSwag command line tool for .NET Core Net70, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
Visit http://NSwag.org for more information.
NSwag bin directory: C:\Users\Dylan\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin\binaries\Net80
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net80]
   at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)
   at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)
   at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 62node:child_process:965
    throw err;
    ^

Error: Command failed: dotnet "C:\Users\Dylan\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin/binaries/Net80/dotnet-nswag.dll" run ..\..\..\WebServiceProjects\WebService.PortalApi\nswag.json /runtime:Net80
    at checkExecSyncError (node:child_process:890:11)
    at Object.execSync (node:child_process:962:15)
    at C:\Users\DylanvanderMerwe\AppData\Roaming\nvm\v18.18.0\node_modules\nswag\bin\nswag.js:57:19
    at ChildProcess.exithandler (node:child_process:414:7)
    at ChildProcess.emit (node:events:517:28)
    at maybeClose (node:internal/child_process:1098:16)
    at ChildProcess._handle.onexit (node:internal/child_process:303:5) {
  status:<PHONE_NUMBER>,
  signal: null,
  output: [ null, null, null ],
  pid: 32788,
  stdout: null,
  stderr: null
}

The correct runtime is specified in the config file.
It seems like there is an issue with the CLI. Please advise how to get this working as after updating to net80 we cannot use nswag via the CLI to generate Typescript.

As mentioned in log, cmd is using Net70 instead of  Net80
I think, #4680 https://github.com/RicoSuter/NSwag/pull/4680 should resolve this issue

I'm still getting this issue with 14.0.1 when calling openapi2tsclient /runtime:Net80 /input:....OpenAPI.json
NSwag command line tool for .NET Core Net80, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
NSwag bin directory: /blabla/node_modules/nswag/bin/binaries/Net80
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net80]

@ptasev I have the same error. After i removed /runtime:Net80 the command completes succesfully!

Same here but had to remove the /runtime:Net60 argument in the nswag command nswag run client.nswag
using version 14.0.1
Seems like the runtime argument in the cli is not used anymore?
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net60]```

I'm really confused if we're really no longer supposed to be using this, or if it's a bug. I see there's runtime here but it's defaulted to Net60:
https://github.com/RicoSuter/NSwag/blob/313ea53f4f8a53c0e66b0f84f63f3224bfcebcac/src/NSwag.Commands/NSwagDocumentBase.cs#L60
Also, nswag npm.js seems to accept the runtime argument, considering that it converts legacy args to using runtime, so I'm not sure what to think:
https://github.com/RicoSuter/NSwag/blob/313ea53f4f8a53c0e66b0f84f63f3224bfcebcac/src/NSwag.Npm/bin/nswag.js#L17

nswag run /runtime:Net80

 Ensure that the project has been built.
   at NSwag.Commands.Generation.AspNetCore.AspNetCoreToOpenApiCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Generation/AspNetCore/AspNetCoreToOpenApiCommand.cs:line 82
   at NSwag.Commands.NSwagDocumentBase.GenerateSwaggerDocumentAsync() in /_/src/NSwag.Commands/NSwagDocumentBase.cs:line 270
   at NSwag.Commands.NSwagDocument.ExecuteAsync() in /_/src/NSwag.Commands/NSwagDocument.cs:line 67
   at NSwag.Commands.Document.ExecuteDocumentCommand.ExecuteDocumentAsync(IConsoleHost host, String filePath) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 76
   at NSwag.Commands.Document.ExecuteDocumentCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 40
   at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)
   at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)
   at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 62

any idea about this error please!

I'm still getting this issue with 14.0.1 when calling openapi2tsclient /runtime:Net80 /input:....OpenAPI.json
NSwag command line tool for .NET Core Net80, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
NSwag bin directory: /blabla/node_modules/nswag/bin/binaries/Net80
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net80]

remove /runtime:Net80

Same here but had to remove the /runtime:Net60 argument in the nswag command nswag run client.nswag using version 14.0.1
Seems like the runtime argument in the cli is not used anymore?
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net60]

for run command runtime is supported but only for default config files (so it will take default nswag.json or *.nswag files)

nswag run /runtime:Net80

 Ensure that the project has been built.
   at NSwag.Commands.Generation.AspNetCore.AspNetCoreToOpenApiCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Generation/AspNetCore/AspNetCoreToOpenApiCommand.cs:line 82
   at NSwag.Commands.NSwagDocumentBase.GenerateSwaggerDocumentAsync() in /_/src/NSwag.Commands/NSwagDocumentBase.cs:line 270
   at NSwag.Commands.NSwagDocument.ExecuteAsync() in /_/src/NSwag.Commands/NSwagDocument.cs:line 67
   at NSwag.Commands.Document.ExecuteDocumentCommand.ExecuteDocumentAsync(IConsoleHost host, String filePath) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 76
   at NSwag.Commands.Document.ExecuteDocumentCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 40
   at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)
   at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)
   at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 62

any idea about this error please!

do you have documentGenerator.aspNetCoreToOpenApi.noBuild set to false?
seems like project has not been built yet

Still an issue in 14.0.8. Running from the command line without /runtime:Net80 tells you to add it. Running with it tells you to remove it.
nswag run file.nswag.json
NSwag command line tool for .NET 4.6.2+ WinX64, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
Visit http://nswag.org/ for more information.
NSwag bin directory: C:\Program Files (x86)\Rico Suter\NSwagStudio\Win
Executing file 'enviApi.nswag.json' with variables ''...
System.InvalidOperationException: The specified runtime in the document (Net80) differs from the current process runtime (WinX64). Change the runtime with the '/runtime:Net80' parameter or run the file with the correct command line binary.
at NSwag.Commands.Document.ExecuteDocumentCommand.d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NSwag.Commands.Document.ExecuteDocumentCommand.d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NConsole.CommandLineProcessor.d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at NConsole.CommandLineProcessor.d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NSwag.Commands.NSwagCommandProcessor.d__3.MoveNext()
nswag run file.nswag.json /runtime:Net80
NSwag command line tool for .NET Core Net80, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>))
Visit http://nswag.org/ for more information.
NSwag bin directory: C:\Program Files (x86)\Rico Suter\NSwagStudio\Net80
NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net80]
at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)
at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)
at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in _/src/NSwag.Commands/NSwagCommandProcessor.cs:line 65
Renaming the file to file.nswag and then running this does work:
nswag run /runtime:Net80

Removimg passed runtime argument in nswag.cmd works for me.
@ECHO OFF
set args=%*

IF NOT "%args:/runtime:winx86=%" == "%args%" (
    "%~dp0/Win/nswag.x86.exe" %*
    GOTO end
)

IF NOT "%args:/runtime:net60=%" == "%args%" (
    dotnet "%~dp0/Net60/dotnet-nswag.dll" %*
    GOTO end
)

IF NOT "%args:/runtime:net70=%" == "%args%" (
-   dotnet "%~dp0/Net70/dotnet-nswag.dll" %*
+   dotnet "%~dp0/Net70/dotnet-nswag.dll" %args:/runtime:net70=%
    GOTO end
)

IF NOT "%args:/runtime:net80=%" == "%args%" (
    dotnet "%~dp0/Net80/dotnet-nswag.dll" %*
    GOTO end
)

"%~dp0/Win/nswag.exe" %*
:end

Still an issue in 14.1
Running from the command line without /runtime:Net60 tells you to add it. Running with it tells you to remove it.
Any suggestions as to how I can run it for a .NET 6.0 project.
With /runtime:Net60
NSwag NPM CLI NSwag command line tool for .NET Core Net60, toolchain v<IP_ADDRESS> (NJsonSchema v<IP_ADDRESS> (Newtonsoft.Json v<IP_ADDRESS>)) Visit http://NSwag.org for more information. NSwag bin directory: C:\Git\custom-elements\node_modules\nswag\bin\binaries\Net60 NConsole.UnusedArgumentException: Unrecognised arguments are present: [/runtime:Net60]    at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)    at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)    at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 65node:child_process:965     throw err;     ^
Without /runtime:Net60
System.InvalidOperationException: The specified runtime in the document (Net60) differs from the current process runtime (Net80). Change the runtime with the '/runtime:Net60' parameter or run the file with the correct command line binary.    at NSwag.Commands.Document.ExecuteDocumentCommand.ExecuteDocumentAsync(IConsoleHost host, String filePath) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 69    at NSwag.Commands.Document.ExecuteDocumentCommand.RunAsync(CommandLineProcessor processor, IConsoleHost host) in /_/src/NSwag.Commands/Commands/Document/ExecuteDocumentCommand.cs:line 33    at NConsole.CommandLineProcessor.ProcessSingleAsync(String[] args, Object input)    at NConsole.CommandLineProcessor.ProcessAsync(String[] args, Object input)    at NSwag.Commands.NSwagCommandProcessor.ProcessAsync(String[] args) in /_/src/NSwag.Commands/NSwagCommandProcessor.cs:line 65node:child_process:965

I presume your nswag json file specifies the runtime as .NET 6 despite the assembly being .NET 8. You'll have to change the settings.

I agree with Tridus.  Omitting the file name works.  Definitely seems like a bug.


Fix: improve detection of mocked star column

The previous check in update_schema where we rendered and then checked for a mocked star projection was insufficient. For example, if a user transforms the column names returned by MacroEvaluator.columns_to_types, then the equality check with SQLMESH_MOCKED_STAR will never hold.
This PR makes the cache clearing check more explicit, by setting special metadata & propagating it to the model when the columns_to_types method is invoked, instead of relying on the rendered query's form which can be anything.
cc @z3z1ma

alternative https://github.com/TobikoData/sqlmesh/pull/1615


feat(New Eslint Config)

This updates the initial eslint config we were using with all of the REST of the rules we should have been using. Any errors on rules have been disabled in the root config file. We will need to go through each rule and resolve them with separate PRs for each rule until we have everything cleaned up.

Fails

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

:no_entry_sign:
Please add a '### Dependencies' section to explain the reason we are changing dependencies.

Warnings

:warning:
Please assign someone to merge this PR, and optionally include people who should review.

  Generated by :no_entry_sign: dangerJS against fd19430b4e894e6ffe07beedb57fb03934f4ac07


[BUG] Element Id  "By.Id("passwordInput")" and "(By.Id("submitButton")" not found in "ADFSLoginAction" method inside WebClient class.

Bug Report
The login procedure fails because  "passwordInput" and "submitButton"  ids  not found on the login page.
The current version of the WebClient class, method "ADFSLoginAction" uses the following ids to insert password and execute submit action in the form:
driver.FindElement(By.Id("passwordInput")).SendKeys(args.Password.ToUnsecureString());
driver.ClickWhenAvailable(By.Id("submitButton"), TimeSpan.FromSeconds(2));
I Solved my problem updating in this way:
driver.FindElement(By.Name("passwd")).SendKeys(args.Password.ToUnsecureString());
driver.ClickWhenAvailable(By.XPath("//input[@type='submit']"), TimeSpan.FromSeconds(2));
Has anyone else encountered the same problem?
EasyRepro Version

[ ] Microsoft Dynamics 365 Online Version 8.2 (8.2.x) (DB 8.2.x) online
[ ] Microsoft Dynamics 365 Online Version 9.0 (9.0.x) (DB 9.0.x) online
[ ] Microsoft Dynamics 365 Online Version 9.0.2 (9.0.2) (DB 9.0.2) online
[x] Microsoft Dynamics 365 Online Version 9.1 (9.1.x) (DB 9.1.x) online

UCI or Classic Web

[x] UCI (XrmApp)
[ ] Classic Web (XrmBrowser)

Online or On Premise

[x] Online
[ ] On Premise

Browser

[x] Chrome
[ ] Firefox
[ ] IE
[ ] Edge

Describe the bug

Special formatting / display

Code to reproduce

Expected behavior

Screenshots

Additional context

Is this issue resolve?  Me too facing the issue regarding the Password and submit, workaround is there now and able to proceed.
Thanks


miniai - Consistency between jumping and incremental selection

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md

Module(s)
mini.ai
Description
Again not quite sure if this qualifies as a feature request, I will try my best to explain the situation.

Currently in vim/neovim, consecutive applications of textobjects or textobjects with a count will increment selection. For example,
with cursor on letter w, the application of v3aw or consecutive applications of vawawaw will both go from:

to

This is also consistent with other  motions like paragraph, sentence, tags, etc.
However, the behavior does not seem consistent with some of the motions provided by mini.ai. For example, with the argument textobject, pressing v3aa or vaaaaaa will both go from:

to

Going from vim behavior, expectation would I believe instead be:

This also impacts the "around_next" and "inside_next" text motion where for some situatons the selection will increment and others the selection will jump to the next match.
Question
Basically, I am wondering if it would be possible to have a relatively consistent approach regarding incremental selection vs jumping. I am not sure what could be the best approach for this:
Perhaps have repeated motions (e.g.: vawaw or vaaaa) and motions with a count  increment the selection, whereas "around_next" and "inside_next" would always jump to the next occurrence of the textobject?

The behavior of computing a textobject region is controlled by two configuration settings: search_method and n_lines. The birds-eye view of the process is the following (see this help section for more details):

Textobject search is done by iterating through all matching regions and picking "the best" one. Which one is considered to be the best is mostly decided by search_method. By default it is cover_or_next meaning it will try to pick smallest covering region first; if there is no such region, it tries to take closest "next" one. See here for more details about search methods.
Search is done first inside lines of current selection (usually current line) and then in the whole n_lines neighborhood (n_lines up from top line and same down from bottom line).

Perhaps have repeated motions (e.g.: vawaw or vaaaa) and motions with a count increment the selection, whereas "around_next" and "inside_next" would always jump to the next occurrence of the textobject?

Coming back to the issue. 'mini.ai' should already do as you suggest. The nuance here is that it does so respecting search_method.

However, the behavior does not seem consistent with some of the motions provided by mini.ai. For example, with the argument textobject, pressing v3aa or vaaaaaa will both go from:

All your examples use argument textobject. What you expect to be an increment here is arguably not an argument, but "two/three arguments". Consecutive application or usage of count results into "second/third argument". It is mostly not designed to be incremented, but can result in increment in certain cases (like with the string f(a, b, c(x, y, z)) and cursor on x).
Most other textobjects, though, are designed to be found both as "covering" and "next/prev".

This also impacts the "around_next" and "inside_next" text motion where for some situatons the selection will increment and others the selection will jump to the next match.

It already should do that. Those are shortcuts for temporary usage of "next" search method. It should select closest matching region which is "to the right" of current reference region (selection) and never result in increasing selection (selecting covering region). If you can provide an example of different behavior, it would be great.
Does this answer your questions?

Thank you for the clarification @echasnovski .
It does seem that indeed the behavior is properly consistent with motions implemented by your plugin.
I guess my confusion stems mostly from the fact of how vim interprets some of its motions compared to how they are interpreted by this plugin, and the fact that you can apply "around_next" and "inside_next" to those vim motions.
For example, if I select a paragraph with vap and then use anp for around_next paragraph, since those are vim motions it will increment from :

to

So in this case, vap followed by anp behaves like vim vapap and both increment the selection, instead of jumping and selecting the next paragraph which would be the behavior of mini.ai's own motions I believe.
Basically it seems that for vim, it will either keep incrementing (in a lot of textobjects, like word, paragraph, sentence) or in some cases jump (like ) and }). My interpretation is that for textobject that can be consecutive one after another (e.g.: word, paragraph, sentence), it increments, and if not it jumps.
That is why for me I kind of see the argument text object similar to word or sentence, as something where you can have multiple consecutive ones in a row, so I guess that is where the incremental selection expectation came from.

Either way both approaches are probably fine. I think the current approach probably lends itself to greater consistency from within the plugin and easier implementation, although it could diverge slightly from some of vim's original motions.
Hope that long wall of text made sense, please excuse my ramblings.

So in this case, vap followed by anp behaves like vim vapap and both increment the selection, instead of jumping and selecting the next paragraph which would be the behavior of mini.ai's own motions I believe.

Sure they are, because p is not a 'mini.ai' textobject. It falls back to Neovim's textobject which behaves like you described (in both ap and anp/alp). If implemented as 'mini.ai' custom textobject, it will respect search method (from config in case of ap, next/prev in case of anp/alp).

My interpretation is that for textobject that can be consecutive one after another (e.g.: word, paragraph, sentence), it increments, and if not it jumps.

This makes sense in general. Unfortunately, there seems to always be nuances in certain cases, whichever approach to choose.
All in all, I think I'll close this issue, as subject matter seems to be consistent (albeit not always aligned with Neovim's built-ins).


Complete "Klimaaktionsplan" card and sub-page after redesign

Depends on #179

[ ] Ensure progress bar on card is filled according to checklist.
[ ] Handle the case that the checklist was not used at all by the local team. Esp. the card need something like: "N/A"
[ ] Find some way to deal with the case that there is no KAP. Are the remaining points in the checklist even relevant?
[ ] Include "Bewertung Klimaaktionsplan" in sub-page
[ ] Include checklist in sub-page
[ ] Check if anything is missing in the sub-page and might be added. (possibly new issue)

Regarding point 3:
Shall we maybe remove the question "Gibt es einen KAP?" as this is not a quality criteria of a KAP and does not really fit into the list?
In case there is no KAP the whole monitoring would not make sense anyway...
@mdrie  @kleins05

I agree. Even if there is no KAP, there could still be some kind of limited concept or planning and some of the questions could have a positive answer.


Fix VCS root id in pull request feature

@bot-gradle test and merge

OK, I've already triggered a build for you.


Make keys DDL use LeveledCompactionStrategy by default

This fits the use case as keys table is read intensively during the bootstrap phase when eager recovery is used, and then it does a lot of updates/deletes which plays well with this strategy and allows avoiding putting more pressure on the compaction process. We've observed significant performance gains when using this strategy compared to the default one in a keyspace with hundreds of thousands of keys -- compaction manages to keep up and allows for a fast keys recovery

lgtm


2.10: Issue with forward annotations and serializers/computed_field (raises: <model> is not fully defined)

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
MRE from https://github.com/pydantic/pydantic/issues/10905#issuecomment-2489915307 (thanks @logan-markewich):
base.py
from __future__ import annotations

from typing import Any, Dict
from pydantic import BaseModel, model_serializer

class BaseComponent(BaseModel):

    @model_serializer(mode="wrap")
    def custom_model_dump(self, handler: Any) -> Dict[str, Any]:
        return handler(self)

main.py
from base import BaseComponent

class Reproduce2(BaseComponent):
  is_base: bool = False

if __name__ == "__main__":
  repro = Reproduce2()

Example Code
No response
Python, Pydantic & OS Version
2.10

Looking into this now, thanks for the report.

Hey folks! We've just released v2.10.1 with a fix for this issue!
Let us know if you're still experiencing any difficulties. Thanks!


navigate to frame idx

allow direct navigation to a specific frame at desired idx

[x] add UI element in the viewer
[x] add command

implemented in 1.5.0


Woodwork type inference throws a "different data types" error when trying to predict labels on test data

Version:
evalml = "0.43.0"
woodwork = "0.11.1"
I am using evalml for a benchmark and among the chosen datasets are higgs and kick. The problem is that I split the datasets and run the analysis, I get an error saying "Input X data types are different from the input types the pipeline was fitted on.". After looking into it, I realised woodwork inferred schema decides that some of the variables in the test set have a different type than the one assigned to them during the automl search and fitting. My guess is that this crashes when it classifies extra variables as unknown type.
Code Sample, a copy-pastable example to reproduce your bug.
To replicate this error, I have downloaded the `.csv' files from the OpenML repo and have performed a 80/20 stratified split on the dataset
import pandas as pd
from evalml import automl
from sklearn.model_selection import train_test_split
from evalml.utils import infer_feature_types

dataset = pd.read_csv("Binary Classification/phpZLgL9q.csv")
target = dataset[dataset.columns[-1]]  # the target is the last column
data = dataset.drop(columns=[dataset.columns[-1]], axis=1)
train_data, test_data, train_target, test_target = train_test_split(
    data, target, test_size=0.2, random_state=42, stratify=target
)

eval_automl = automl.AutoMLSearch(
    X_train=train_data,
    y_train=train_target,
    problem_type="binary",
    objective="f1",
    max_time=30,
    ensembling=False,
    verbose=True,
)
eval_automl.search()
eval_automl.best_pipeline.predict(test_data)

You can see the evalml logs here, I omit most of the training logs that go as expected.
for both datasets, I get the same error:
Removing columns ['MMRAcquisitionRetailAveragePrice', 'MMRAcquisitonRetailCleanPrice', 'MMRCurrentRetailAveragePrice', 'MMRCurrentRetailCleanPrice'] because they are of 'Unknown' type
Generating pipelines to search over...
...
Search finished after 00:37
Best pipeline: Elastic Net Classifier w/ Label Encoder + Drop Columns Transformer + Imputer + One Hot Encoder + Undersampler + Standard Scaler
Best pipeline F1: 0.410122
# in the predict() phase the error occurs
File "ww_tester.py", line 22, in <module>
    eval_automl.best_pipeline.predict(test_data)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/pipeline_meta.py", line 33, in _check_for_fit
    return method(self, *args, **kwargs)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/classification_pipeline.py", line 116, in predict
    _predictions = self._predict(X, objective=objective)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/binary_classification_pipeline.py", line 72, in _predict
    ypred_proba = self.predict_proba(X)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/pipeline_meta.py", line 33, in _check_for_fit
    return method(self, *args, **kwargs)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/binary_classification_pipeline.py", line 87, in predict_proba
    return super().predict_proba(X)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/pipeline_meta.py", line 33, in _check_for_fit
    return method(self, *args, **kwargs)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/classification_pipeline.py", line 141, in predict_proba
    X = self.transform_all_but_final(X, y=None)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/pipeline_base.py", line 271, in transform_all_but_final
    return self.component_graph.transform_all_but_final(X, y=y)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/component_graph.py", line 259, in transform_all_but_final
    features, _ = self._fit_transform_features_helper(False, X, y)
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/component_graph.py", line 282, in _fit_transform_features_helper
    evaluate_training_only_components=needs_fitting,
  File "/home/mlearning/.cache/pypoetry/virtualenvs/sphynxml-poetry-XCtkmD2k-py3.7/lib/python3.7/site-packages/evalml/pipelines/component_graph.py", line 393, in _transform_features
    "Input X data types are different from the input types the pipeline was fitted on."
ValueError: Input X data types are different from the input types the pipeline was fitted on.

If I run the woodwork infer schema function outside of evalml, we can see that different variables have been identified as unknown type, hence the error.
import pandas as pd
from sklearn.model_selection import train_test_split
from evalml.utils import infer_feature_types

dataset = pd.read_csv("kick.csv")
target = dataset[dataset.columns[-1]]  # the target is the last column
data = dataset.drop(columns=[dataset.columns[-1]], axis=1)
train_data, test_data, train_target, test_target = train_test_split(
    data, target, test_size=0.2, random_state=42, stratify=target
)
ww_train = infer_feature_types(train_data)
ww_test = infer_feature_types(test_data)
unknown_columns = list(ww_train.ww.select("unknown", return_schema=True).columns)
unknown_columns_test = list(ww_test.ww.select("unknown", return_schema=True).columns)
print(unknown_columns)
print(unknown_columns_test)

>>> ['MMRAcquisitionRetailAveragePrice', 'MMRAcquisitonRetailCleanPrice', 'MMRCurrentRetailAveragePrice', 'MMRCurrentRetailCleanPrice']
>>>['MMRAcquisitionAuctionAveragePrice', 'MMRAcquisitionAuctionCleanPrice', 'MMRAcquisitionRetailAveragePrice', 'MMRAcquisitonRetailCleanPrice', 'MMRCurrentAuctionAveragePrice', 'MMRCurrentAuctionCleanPrice', 'MMRCurrentRetailAveragePrice', 'MMRCurrentRetailCleanPrice']

# same code for the higgs dataset, the prints show:
>>>Columns (19,20,21,22,23,24,25,26,27) have mixed types.Specify dtype option on import or set low_memory=False.
>>>['m_jj', 'm_jjj', 'm_lv', 'm_jlv', 'm_bb', 'm_wbb', 'm_wwbb']
>>>['jet4phi', 'm_jj', 'm_jjj', 'm_lv', 'm_jlv', 'm_bb', 'm_wbb', 'm_wwbb']

It is not clear to me as to why this error occurs. I have looked into the data and the splits and found no major differences in their content to justify the difference in their dtype identification.
Any help or insights would be appreciated.

@chukarsten any response for this? Thanks in advance.

@iXanthos actually was going to look at it tomorrow! Will get back to you soon

@iXanthos can you give me a pip list of your environment?  Also, you didn't do any cleaning of the target data, right?  I was also using the ARFF files that are on the links.

Also, where can I get the csv files you used?  I can only seem to find the ARFF files

hmm yeah you are correct. It seems I have transformed these datasets from .arff to .csv in order to have everything in that format. The code I used for the formatting is:
if ".arff" in filepath:
    arff_data = arff.loadarff(filepath)
    dataset = pd.DataFrame(arff_data[0])
    for column in dataset.columns:
        try:
            dataset[column] = dataset[column].str.decode("utf-8")
        except:
            continue
else:
    dataset = pd.read_csv(filepath)

After that I save them to .csv files and voila.
The pip freeze you asked (from the .toml file I get from poetry)
[tool.poetry.dependencies]
python = "~3.7.1"
alembic = "1.7.5"
argon2-cffi = "21.3.0"
argon2-cffi-bindings = "21.2.0"
asgiref = "3.5.0"
attrs = "21.4.0"
backcall = "0.2.0"
black = "22.1.*"
bleach = "4.1.0"
catboost = "1.0.4"
category-encoders = "2.3.0"
certifi = "2021.10.8"
cffi = "1.15.0"
charset-normalizer = "2.0.10"
click = "8.0.3"
cloudpickle = "2.0.0"
colorama = "0.4.4"
coreapi = "2.3.3"
coreschema = "0.0.4"
coverage = "6.3.1"
cycler = "0.11.0"
Cython = "0.29.26"
dask = "2022.1.0"
databricks-cli = "0.16.2"
debugpy = "1.5.1"
decorator = "4.4.2"
defusedxml = "0.7.1"
distributed = "2022.1.0"
Django = "3.2.11"
djangorestframework = "3.13.1"
docker = "5.0.3"
drf-yasg = "1.20.0"
elasticsearch = "7.17.0"
entrypoints = "0.3"
evalml = "0.43.0"
featuretools = "1.4.0"
Flask = "2.0.2"
fonttools = "4.29.0"
fsspec = "2022.1.0"
gitdb = "4.0.9"
GitPython = "3.1.26"
graphviz = "0.19.1"
greenlet = "1.1.2"
gunicorn = "20.1.0"
HeapDict = "1.0.1"
idna = "3.3"
imageio = "2.14.1"
imbalanced-learn = "0.9.0"
importlib-metadata = "4.2.*"
importlib-resources = "5.4.0"
inflection = "0.5.1"
iniconfig = "1.1.1"
ipykernel = "6.7.0"
ipython = "7.31.1"
ipython_genutils = "0.2.0"
ipywidgets = "7.6.5"
itsdangerous = "2.0.1"
itypes = "1.2.0"
jedi = "0.18.1"
Jinja2 = "3.0.3"
joblib = "1.1.0"
jsonschema = "4.4.0"
jupyter-client = "7.1.2"
jupyter-core = "4.9.1"
jupyterlab-pygments = "0.1.2"
jupyterlab-widgets = "1.0.2"
kaleido = "0.2.1"
kiwisolver = "1.3.2"
lightgbm = "3.3.2"
lime = "<IP_ADDRESS>"
llvmlite = "0.38.0"
locket = "0.2.1"
Mako = "1.1.6"
MarkupSafe = "2.0.1"
matplotlib = "3.5.1"
matplotlib-inline = "0.1.3"
mistune = "0.8.4"
mlflow = "1.23.0"
model-bakery = "1.4.0"
msgpack = "1.0.3"
mypy-extensions = "0.4.3"
nbclient = "0.5.10"
nbconvert = "6.4.0"
nbformat = "5.1.3"
nest-asyncio = "1.5.4"
networkx = "2.5.1"
nlp-primitives = "2.1.0"
nltk = "3.6.5"
notebook = "6.4.8"
numba = "0.55.0"
numpy = "1.21.5"
packaging = "21.3"
pandas = "1.3.5"
pandocfilters = "1.5.0"
parso = "0.8.3"
partd = "1.2.0"
pathspec = "0.9.0"
patsy = "0.5.2"
pexpect = "4.8.0"
pickleshare = "0.7.5"
Pillow = "9.0.0"
platformdirs = "2.4.1"
plotly = "5.5.0"
pluggy = "1.0.0"
pmdarima = "1.8.4"
prometheus-client = "0.13.0"
prometheus-flask-exporter = "0.18.7"
prompt-toolkit = "3.0.24"
protobuf = "3.19.3"
psutil = "5.9.0"
psycopg2 = "2.9.3"
ptyprocess = "0.7.0"
py = "1.11.0"
pyaml = "21.10.1"
pycparser = "2.21"
Pygments = "2.11.2"
pyparsing = "3.0.7"
pyrsistent = "0.18.1"
pytest = "6.2.5"
pytest-django = "4.5.2"
python-dateutil = "2.8.2"
pytz = "2021.3"
PyWavelets = "1.2.0"
PyYAML = "6.0"
pyzmq = "22.3.0"
querystring-parser = "1.2.4"
regex = "2022.1.18"
requests = "2.27.1"
requirements-parser = "0.5.0"
"ruamel.yaml" = "0.17.20"
"ruamel.yaml.clib" = "0.2.6"
scikit-image = "0.19.1"
scikit-learn = "1.0.2"
scikit-optimize = "0.9.0"
scipy = "1.7.3"
seaborn = "0.11.2"
Send2Trash = "1.8.0"
shap = "0.40.0"
six = "1.16.0"
sktime = "0.8.0"
slicer = "0.0.7"
smmap = "5.0.0"
sortedcontainers = "2.4.0"
SQLAlchemy = "1.4.31"
sqlparse = "0.4.2"
statsmodels = "0.13.1"
tabulate = "0.8.9"
tblib = "1.7.0"
tenacity = "8.0.1"
terminado = "0.12.1"
testpath = "0.5.0"
texttable = "1.6.4"
threadpoolctl = "3.0.0"
tifffile = "2021.11.2"
toml = "0.10.2"
tomli = "1.2.3"
toolz = "0.11.2"
tornado = "6.1"
tqdm = "4.62.3"
traitlets = "5.1.1"
typed-ast = "1.5.2"
types-setuptools = "57.4.7"
typing-extensions = "4.0.1"
uritemplate = "4.1.1"
urllib3 = "1.26.8"
vowpalwabbit = "8.11.0"
wcwidth = "0.2.5"
webencodings = "0.5.1"
websocket-client = "1.2.3"
Werkzeug = "2.0.2"
widgetsnbextension = "3.5.2"
woodwork = "0.11.1"
xgboost = "1.5.2"
zict = "2.0.0"
zipp = "3.7.0"
celery = "^5.2.3"
pytest-cov = "^3.0.0"
Sphinx = "4.3.*"
pika = "^1.2.0"
crontab = "^0.23.0"
django-cors-headers = "^3.11.0"
celery-progress = "^0.1.2"
django-celery-results = "^2.3.0"

Hmmm, I'm not sure @iXanthos .  I ran the following, slightly modified script, and finished the search.
`from evalml import automl
from evalml.utils import infer_feature_types
import pandas as pd
from scipy.io import arff
from sklearn.model_selection import train_test_split
from woodwork.logical_types import Unknown, Double
dataset = arff.loadarff('higgs.arff')
dataset = pd.DataFrame(dataset[0])
print(dataset.head())
target = dataset[dataset.columns[0]].astype(int)  # the target is the first column and comes in as a bytes/object type
data = dataset.drop(columns=[dataset.columns[0]], axis=1)
train_data, test_data, train_target, test_target = train_test_split(
data, target, test_size=0.2, random_state=42, stratify=target
)
Check inferred feature types
tr = infer_feature_types(train_data)
assert not any([isinstance(x, Unknown) for x in tr.ww.logical_types.values()])
assert any([isinstance(x, Double) for x in tr.ww.logical_types.values()])
te = infer_feature_types(test_data)
assert not any([isinstance(x, Unknown) for x in te.ww.logical_types.values()])
assert any([isinstance(x, Double) for x in te.ww.logical_types.values()])
eval_automl = automl.AutoMLSearch(
X_train=train_data,
y_train=train_target,
problem_type="binary",
objective="f1",
max_time=30,
ensembling=False,
verbose=True,
)
eval_automl.search()
eval_automl.best_pipeline.predict(test_data)`
I'd be curious what your data looks like after it's gone through the ARFF->CSV->Dataframe process.  I suspect you're getting some sort of corruption there that's causing WW to infer Unknown.

hmm, it could possibly be corrupted due to the utf-8 encoding I do, still no errors show when running it.
I need .csv files for storing and reviewing purposes of the data by others.
Good new is I saved the train/test partitions as .csv and then loaded it as dataframes to see if the error occurs, but it did not reappear.
So, to sum up, let me change some things in my pipeline and see if I can bypass the error myself before closing this issue. I will come up tomorrow with a final comment and close it myself, I just need to make sure I am not missing anything else that could contribute to this result.

Sounds good!  Sorry took so long to look into it.  Thanks for using EvalML and Woodwork!  Check out our latest versions - we're up to EvalML 0.52.0 and WW 0.16.3 now!


Should specify install visual studio 2017 and c++ during cargo install

Hello. Once again i wanted to play with cardano-cli on WINDOWS 10 (this time)
with :

cargo 1.33.0 (f099fe94b 2019-02-12)
rustc 1.33.0 (2aa4c46cf 2019-02-28)

I had the following FATAL error (stopping all compilations) at first
please ensure that VS 2013, VS 2015 or VS 2017 was installed with the Visual C++ option
Maybe somewhere in the process install of the README could be mentionned the requirement of these softwares
Github solution
I had no problem with installing the 2017 version + the WINDOWS UCRT SDK extension

To me it looks like peculiarities of the rust target platform. We should not try repeat all the Windows-specific rustup guidance in our README, as this should be common to all Rust projects and may change with time.

ok


Support option to disable DNSSEC validation

This enables the cd flag when DNSSEC records are requested, but we want to disable DNSSEC validation on the resolver.
I created this test file to test the changes against real resolvers (but didn't commit it):
// pkg/dohdec/test/real.ava.js

import {DNSoverHTTPS} from '../lib/doh.js'
import {DNSoverTLS} from '../lib/index.js'
// eslint-disable-next-line node/no-missing-import
import test from 'ava'

test('DoH - no dnssec', async t => {
  const doh = new DNSoverHTTPS()
  const r = await doh.lookup('ietf.org', {
    json: false,
    dnssec: false,
  })
  t.truthy(r)

  t.false(r.answers.some(a => a.type === 'RRSIG'))
  t.false(r.flag_cd)
})

test('DoH - dnssec', async t => {
  const doh = new DNSoverHTTPS()
  const r = await doh.lookup('ietf.org', {
    json: false,
    dnssec: true,
  })
  t.truthy(r)

  t.true(r.answers.some(a => a.type === 'RRSIG'))
  t.false(r.flag_cd)
})

test('DoH - dnssec failed', async t => {
  const doh = new DNSoverHTTPS()
  const r = await doh.lookup('dnssec-failed.org', {
    json: false,
    dnssec: true,
  })
  t.truthy(r)

  t.is(r.rcode, 'SERVFAIL')
  t.is(r.answers.length, 0)
  t.false(r.flag_cd)
})

test('DoH - dnssec failed with cd=1', async t => {
  const doh = new DNSoverHTTPS()
  const r = await doh.lookup('dnssec-failed.org', {
    json: false,
    dnssec: true,
    dnssecCd: true,
  })
  t.truthy(r)

  t.is(r.rcode, 'NOERROR')
  t.true(r.answers.some(a => a.type === 'RRSIG'))
  t.true(r.flag_cd)
})

test('DoT - no dnssec', async t => {
  const dot = new DNSoverTLS()
  const r = await dot.lookup('ietf.org', {
    json: false,
    dnssec: false,
  })
  t.truthy(r)

  t.false(r.answers.some(a => a.type === 'RRSIG'))
  t.false(r.flag_cd)
})

test('DoT - dnssec', async t => {
  const dot = new DNSoverTLS()
  const r = await dot.lookup('ietf.org', {
    json: false,
    dnssec: true,
  })
  t.truthy(r)

  t.true(r.answers.some(a => a.type === 'RRSIG'))
  t.false(r.flag_cd)
})

test('DoT - dnssec failed', async t => {
  const dot = new DNSoverTLS()
  const r = await dot.lookup('dnssec-failed.org', {
    json: false,
    dnssec: true,
  })
  t.truthy(r)

  t.is(r.rcode, 'SERVFAIL')
  t.is(r.answers.length, 0)
  t.false(r.flag_cd)
})

Fixes #37

I spotted a couple of bugs whilst testing the PR but now everything looks good and I won't be making further changes until you provide some feedback.

OK, this looks ready to go to me.  There's a solid 10% chance this is going to break GHA when it lands, because I hadn't updated the action definition to run on pull requests to main instead of master, but I'll deal with that in my update PR that will come after this.  Anything else before I merge?

Thank you! I think we're good to go! 🚀

Hi @hildjj 👋🏾 Can you please release this change to NPM? I've been relying on the Git tag but that's now breaking CI for me. TIA! 🙇🏾

I'll look at this first thing Tuesday.  I think this is blocked on https://github.com/hildjj/mock-tls-server/issues/2, so I either have to fix that or rewrite the tests.

OK, I think I'm ready to cut a major release, but I'm too tired today to re-learn lerna.  Release probably will happen tomorrow morning MDT.

Version 6.0.0 just released.  Please check to make sure I got it right... I had to do a bunch of manual hacking to get the release to publish from GHA with provenance information correct.

Thanks @hildjj! I tried upgrading, but it looks like the changes I made to pkg/dohdec/types/doh.d.ts in this PR didn't make it to NPM:
src/integration_tests/retrieval.test.ts:38:9 - error TS2345: Argument of type '{ rrtype: "A" | "NS" | "MD" | "MF" | "CNAME" | "SOA" | "MB" | "MG" | "MR" | "NULL" | "WKS" | "PTR" | "HINFO" | "MINFO" | "MX" | "TXT" | "RP" | "AFSDB" | "X25" | "ISDN" | "RT" | "NSAP" | ... 66 more ... | "DLV"; json: false; decode: false; dnssec: true; dnssecCheckingDisabled: boolean; }' is not assignable to parameter of type 'string | DOH_LookupOptions | undefined'.
  Object literal may only specify known properties, and 'dnssecCheckingDisabled' does not exist in type 'DOH_LookupOptions'.

38         dnssecCheckingDisabled: true,
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Found 1 error in src/integration_tests/retrieval.test.ts:38

The .d.ts files are generated, and aren't even checked into git anymore.  I'll see if I can find the right place to change the source.

It looks like you only added it on getJSON(), and didn't get it passed all the way through the types when you use lookup().
WillFix.


New test option

When time allows it might be useful to add one more option in addition to tse and pseq, namely speedyseq.
The priority now is, however, in adding the other tests on alpha, beta etc. first.

Ok! I implemented the other four experiments in this branch. Transformation, agglomeration and alpha diversity estimation could be smoothly be added to the workflow. Beta diversity estimation required some debugging and it seems to throw an error every now and then.

Closed by #20


MWPW-163598: Format links so they point to correct domain

Resolves: MWPW-163598
Before: https://stage--dme-partners--adobecom.hlx.live/apac/channelpartners/drafts/ratko/announcements-preview
After: https://mwpw-163598-announcment-preview-link--dme-partners--adobecom.hlx.live/apac/channelpartners/drafts/ratko/announcements-preview

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 82.38%. Comparing base (7ae9bb5) to head (17769d1).
Report is 2 commits behind head on stage.

Additional details and impacted files
@@           Coverage Diff           @@
##            stage     #154   +/-   ##
=======================================
  Coverage   82.38%   82.38%
=======================================
  Files          10       10
  Lines        3332     3332
=======================================
  Hits         2745     2745
  Misses        587      587

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

one comment: is this not something milo offers? it's fine for now, but we should see in the future if we can handle this in a generic way


FileNotFoundError: [Errno 2] No such file or directory: 'rvl_cdip_dataset.csv'

I cannot find the rvl_cdip_dataset.csv file in your repository. It gives me an error in line 69 of dataset_creation_for_docformer.py
Where do I find the rvl_cdip_dataset.csv file?

Dear @SoumyaroopNandi, the code in the examples is just for the representation purpose, which I ran by creating a custom CSV file and running the docformer model on it. In the "Usage" section of the ReadMe, the appropriate usage of the docformer model is mentioned. I hope this helps and let me know if you still have confusion. I would try to post more example codes so that, everything becomes more clear

As far as the dataset is concerned, I cannot share the dataset at this time, but I would try to post some sample dataset with examples, I think that, it would help


Cannot find namespace 'proto'.

I'm a bit new to npm so please be gentle if this turns out to be my fault!
I'm developing an Angular typescript app, and have run the install as suggested
npm install --save @hashgraph/sdk

Unfortunately I receive the following error messages:
Error: node_modules/@hashgraph/sdk/lib/query/CostQuery.d.ts:24:14 - error TS2503: Cannot find namespace 'proto'.

24     _header: proto.IQueryHeader | null;
                ~~~~~
node_modules/@hashgraph/sdk/lib/topic/TopicId.d.ts:23:30 - error TS2503: Cannot find namespace 'proto'.

23     static _fromProtobuf(id: proto.ITopicID): TopicId;

I'd be grateful for any advice

What version of Angular.js and @hashgraph/sdk are you running?

Stale issue; closing.


Issue #388 - Catch Cereal Exceptions

Issue #388 - Catch Cereal Exceptions
Every serialize functions in affected files now have try/catch blocks.
1 catch specifically for cereal::RapidJSONException (Gives out qWarning)
1 catch for std::exception (Gives out qCritical)
Additions/modifications proposed in this pull request:

Put some unique message in each file's qWarnings and qCriticals?

This looks great, one comment though, since all those static void serialize functions cannot be called from outside, please move try/catch blocks to their callers that 'are' accessible from outside ( the ones that call the 'root' serialize method), this way will reduce the number of try/catch code, and will log the error for the whole serialization attempt, and not for each failed 'step' of serialization

Sorry, not quite sure what you mean. Are you talking about things like serializeTo/From in places like Character.cpp and Costumer.cpp?

Exactly, this way you're guarding the gates, and not every step of the way after. Since exceptions are propagated to callers,, 'guarding the gate' will work well enough :)

serialization_common.h  seem like a good central point of doing this, no ? :)

Looking good :)
Should I merge, or do you want to add anything in here ?

Ready for merging now if you wish :). Something to note though, while commonSaveTo is called quite often, every serializer seems to have their own version(s) of loadFrom. I guess that may be something to do for the future?

I think all of the loadFrom functions are loading the original bin files, and that code should not throw anything :)


stop using math/rand.Seed and Read in tests, bump go.mod version to 1.20

Depends on #3869.

Merged into the wrong branch. Will recreate PR.


No module named 'TTS.vc'

Did you clone the TTS repository and install the requirements?

yes i have clone Tortoise-TTS and install requirements.txt

No this one isn't related to Tortoise-TTS but to CoquiAI-TTS, I think you might need to install it too because I haven't put the import in option.

It should be fixed now, try pulling the modifications and run it


Extracted variables, limited membership to channel membership

I moved the token strings to environment variables, which allows users to commit without fear of including their tokens.
I extracted the countdown timers as variables which are easy to change at the top
I extracted team and channel information for quick changing
I limited the participation to just members of the supplied channel

This is the exact set of feature I was thinking could be expanded. I just finished hardcoding the private channel I wanted to use, limited to users in that channel, custom workouts with custom min and max reps. good stuff!

Love it. Just merged it in!

I created a new branch and rebased as to preserve your commit history. Thanks!


⚠ Bofrost.de has degraded performance

In 34eeaa7, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 886 ms

Resolved: Bofrost.de performance has improved in 28eb96d after 29 minutes.


FoV currently missing

I think the field of view would be a nice value to have in galcheat, even though not useful at the BTK level.
What do you think @ismael-mendoza, @HironaoMiyatake @mpaillassa ?

I mean the footprint of a single exposure of the survey on the sky.
We could also add the full area covered by the survey.

In fact I have some notes from the BL meeting some months ago suggesting:

Location for survey footprints, whether two surveys have any overlapping region? or some approximation to them (arcseconds)

Yes I think it could be nice to have both. I propose a definition and different names for each:

Area covered by a single frame/exposure or by the CCD mosaic: field of view, field size, field area.
Area covered by the survey: survey area, survey size, survey (sky) footprint.

With the second we can then imagine having a small script to display the survey areas or compute overlap regions between surveys.


Bug: cannot install http4k

Bug report
Cannot install http4k
To reproduce
$ sdk install http4k produces an error
Stop! http4k is not a valid candidate.
But it is listed in $ sdk list
http4k (0.20.0)                                               http://http4k.org/

http4k is the Functional toolkit for building HTTP applications in Kotlin

                                                            $ sdk install http4k

System info
macOS 10.15 zsh

Have you tried performing and sdk update prior to installation?

I did but I somehow miss the part Please open a new terminal now...
Problem solved


fix(curriculum): improved the feedback of choice B

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #55755

I have added a different feedback for the option B

Hey there,
Thank you for opening this pull request.
This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
Thank you and happy coding.


Why do not you calculate the real output token for throughput?

https://github.com/vllm-project/vllm/blob/c894836108732d0cbb6fce15aeda8de1218a380d/benchmarks/benchmark_throughput.py#L177-L180
You can see that you just use the tokens' length of request in the dataset , not the real output length for the model to eval.

The token returned also contains input prompt. I don't think computing the output will solve you problem.
https://github.com/vllm-project/vllm/blob/c6dfc3cdbeb4687a8313b82d399177e293fee196/vllm/entrypoints/api_server.py#L64-L67


Merge pull request #2 from SaschaWillems/master

merge

I guess this was a mistake? The PR doesn't contain any changes.


Addedd disable_api_termination option along with RSpecs.

In-progress.

Done.

Is it possible to make disable_api_termination=true the default for an AWS account? If so, would using knife ec2 without knowing about this new feature start overriding that and setting disable_api_termination=false for those people unexpectedly?
If not, :+1: on this PR as is.

@btm The disable-api-termination attribute is set on per instance level and not on AWS account level. knife ec2 server create command will set disable-api-termination attribute for the ec2 instance it is going to create and won't override any attribute on the account level or for any other instance. For users unaware of this new feature, it would be safer to keep default value of disable-api-termination attribute to false.

@btm I have also added more checks and RSpecs for spot instance request with disable-api-termination option as Termination Protection cannot be enabled for spot instances. You can refer this ec2 doc link for more details.

:+1:


with 3-22 dev build, auto completion of imported packages is totally gone

auto completion of package name,
api of imported packages
they are all gone.

It isn't about 3-22 dev build, it's about the intellisense setting ' ES6 preview'


References to this are not colored same way.

Hey, I'm not sure if this is intended behavior or a glitch, but currently any theme that applies different coloring to this is not doing same for it's references, i.e.
let self = this;

would result in self being colored in the same way as any other variable.
The expected behavior would be to have self colored same way as this.

This is not a grammar issue. This is theme issue.
let self = this;
self.outletID = outletID;

self in declaration is scoped as variable.other.readwrite, this is scoped as variable.language.this.
self in assignment is scoped as variable.other.object


handle error when word isn't found in cmu dict

File "/home/jack/ai/GPT-SoVITS/GPT_SoVITS/text/english.py", line 343, in qryword
phones.extend(self.cmu[w][0])
KeyError: '-'
because

LangSegment.getTexts("SAINT-DENISE, France.")
[{'lang': 'en', 'text': 'S A I N T-D E N I S E, France. ', 'score': 1.0}]

and "t-d" isn't found.

https://github.com/RVC-Boss/GPT-SoVITS/pull/1454


Allow clickhandler on node to select

Nice component. It would be great if we could set the click handler so that a node can be selected (checkbox selection) when clicked, instead of having to click on the checkbox itself.

I need to  customize to treeview for multiselect and singleselect. When i click on first node it should get selected and when i click on second node, second node should get selected and first selected node should be deselected.


EID-895: Add stub-idp-demo-one and two to local frontend stub config

Following the removal of a bunch of obscure IDPs from frontend-federation-config, the frontend stub config is now out of sync and doesn't always show valid IDPs when running locally. Adding the two new IDPs - stub-idp-demo-one and new stub-idp-demo-two - will fix this

What about other references to stub-idp-demo?
verify-frontend $ git grep stub-idp-demo
spec/api_test_helper.rb:      { 'simpleId' => 'stub-idp-demo', 'entityId' => 'demo-entity-id', 'levelsOfAssurance' => %w(LEVEL_2) },
stub/identity_providers.yml:single_idp_enabled: ['http://idcorp.com', 'http://stub_idp.acme.org/stub-idp-demo-one/SSO/POST']
stub/idp-rules/stub-idp-demo.yml:simpleIds: ["stub-idp-demo"]

and presumably if simpleId changes, federation config will need updating

These should be fine as they're used in the stub mode and for the tests only - but I will double check. And anyway, when you run via the hub-startup script in ida-hub-acceptance-tests then it sets the config to the one in frontend-federation-config. But if you run without that script, then it uses the default local .env file which points to the stub config. So most of the time it's not an issue. And the tests don't need this config as they use the "fake" stub config.


Add stop and charm to custom formula. Also add abbreviation for MP/TURN.

Not sure if MP_TURN is an appropriate name..

MP_REFRESH is how you do the mp per turn

MP_REFRESH is how you do the mp per turn

That's the percentage, i want flat MP per turn, which is MP*MP_REFRESH which is exactly what this is an abbreviation for.

Thanks for the contribution !


Fan and Motion Sensor with same username 1A-2B-3C-4D-5E-FF

The username for Fan and Motion Sensor are the same please change values, thanks

Thanks for catching this :)


this injects the right FLAGD_PORT into all containers running in the pod

@james-milligan some how pkg/utils/flagd-definitions.json got committed, this is safe to remove right?

It looks like its still being imported from "github.com/open-feature/schemas/json" so shouldn't be any problems


[Bug]: cssAssetsFilterFunction breaks dynamic imports

🐞 Bug Report
Describe the bug
I have a use case where I want to inline only entry css but keep separate css files for dynamically imported modules.
cssAssetsFilterFunction: function customCssAssetsFilterFunction(outputAsset) {
    return outputAsset.fileName === 'index.css';
  }

It inlines index.css as expected, it also creates css files for dynamically imported modeuls, but the issue is that the css files are not loaded anymore since they are removed from the metadata by clearImportedCssViteMetadataFromBundle

Is this a regression?

To Reproduce

Create react app
Lazy load one of the commponents(make sure it imports some styles)
Setup the plugin but filter out all files but index.css
Build and run the app in the preview mode, the css for dynamic modules is not loading.

Expected behaviour

I expect filtered out css for dynamically imported modules to work as without the plugin

vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    react(),
    cssInjectedByJsPlugin({
      cssAssetsFilterFunction: function customCssAssetsFilterFunction(outputAsset) {
        return outputAsset.name === 'index.css';
      }
    }),
  ]
})

main.tsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
)

index.css
.test {
  background-color: red;
  width: 100px;
  height: 100px;
}

App.tsx
import {lazy, Suspense} from "react";

const Dynamic = lazy(() => import('./Dynamic.js'));

function App() {
  return (
    <>

      <Suspense><Dynamic/></Suspense>
    </>
  )
}

export default App

Dynamic.tsx
import './dynamic.css';

function Dynamic() {
  return (

  )
}

export default Dynamic

dynamic.css
.dynamic-test {
    background-color: green;
    width: 100px;
    height: 100px;
}

@vovkiv94 You should configure the relativeCSSInjection to true.
Try as the following config example:
 export default defineConfig({     plugins: [         react(),         cssInjectedByJsPlugin({             relativeCSSInjection: true         })     ], })
By configuring relativeCSSInjection to true, each css file will be included in the relevant js that imports it.

Fixed v3.5.1


Fuzzing build looks broken

https://oss-fuzz-build-logs.storage.googleapis.com/index.html#sigstore
@naveensrinivasan Do you know why the build might be broken? Seems like it was working on the 7th.

Step #3 - "compile-libfuzzer-address-x86_64": replacing *testing.F
Step #3 - "compile-libfuzzer-address-x86_64": # github.com/sigstore/sigstore/test/fuzz
Step #3 - "compile-libfuzzer-address-x86_64": ./fuzz_password_test.go_fuzz_.go:38:17: undefined: testingtypes.Errorf
Step #3 - "compile-libfuzzer-address-x86_64": ./fuzz_password_test.go_fuzz_.go:42:17: undefined: testingtypes.Errorf
Step #3 - "compile-libfuzzer-address-x86_64": 2022/09/11 06:12:36 failed to build packages:exit status 2

https://github.com/AdamKorcz/go-118-fuzz-build/commit/5a8cbd76e69a3fec53b692fa51ee230ae79a72f8
Hey @AdamKorcz, it seems like this commit might have broken something. I'm not very familiar with Go fuzzing, do you know if there's something we need to change in our fuzzing test, or is there a bug in the linked commit?

https://oss-fuzz-build-logs.storage.googleapis.com/index.html#sigstore
@naveensrinivasan Do you know why the build might be broken? Seems like it was working on the 7th.

I can take on this. I will let @AdamKorcz let me know what needs to be done.

AdamKorcz/go-118-fuzz-build@5a8cbd7
Hey @AdamKorcz, it seems like this commit might have broken something. I'm not very familiar with Go fuzzing, do you know if there's something we need to change in our fuzzing test, or is there a bug in the linked commit?

I think you are right. Reverting that should solve the issue. I think I have it covered later today.

Should be fixed with https://github.com/AdamKorcz/go-118-fuzz-build/commit/e1f97a00006b1720cec18bebee8ec0f2474e3426

Thanks so much for the quick fix!


Add a test for unique constraint when creating users.

Changes
Just making sure that we're not still creating the problem seen in #316...
:bug: Fix issue where indexed fields could be set to null or an empty string, which would cause the "unique" constraint violation added in #315 to trigger an error.
:beetle: Fix issue where a user could be updated to have neither an email or mobile number.
:leaves: Moved user validation into the Registrar so we can use the same logic everywhere.
:traffic_light: We didn't have tests for the profile endpoints. Whaaaa? Added some.
How should this be reviewed?
Is there anything I'm missing? Any other ways that you could possibly save a null or '' value to an indexed field? Or otherwise get up to no good? :boom: :interrobang:

For review: @angaither @weerd

Hokay! Looks snazzy! :+1:


OpenAPI REST API 0.1.0

Open with https://editor-next.swagger.io/

Response status codes are TBD

Updated Open API specification describing existing API was merged in #20


Module system rework

This PR addresses issues #4 and #7. It completely changes the way that modules behave and adds a new event system for kernel events (mount filesystem, load module, low memory, etc.). It will also create the user space initialization program for the next stage of booting the OS.

Finished implementing the planned features. The kernel now starts a file located at /sbin/init on the initrd disk as the first userspace process. The init process then mounts basic filesystems and starts to initialize required modules using modprobe. After the modules have been initialized, mdev is started to handle devices registers at /sys/bus. The next step will be to launch a shell process, which means porting core utils and bash.


TASK: Adjust php-http/guzzle6-adapter dependency

Allow ^2.0 of the adapter for compatibility with more packages.

@dfeyer This makes it possible to install the package in combination with other packages in need of php-http/guzzle6-adapter v2 (in my case it was https://packagist.org/packages/punktde/sentry-flow) – a patch level release of ttree/map would be great!

@dfeyer Could you please take a look!?


feature: playwright adapter

Description
Microsoft just releases a new cool lib called Playwright (https://github.com/microsoft/playwright/tree/v0.10.0) and the team behind is the one who are building the Puppeteer. May we consider support this at some point?

We would definitely consider supporting playwright.

Hello Team!
Any updates on this? Would really appreciate playwright support.
Thank you.
Kind Regards,
Marek Henzl

hi all,
i also ran into this issue and took it upon myself to write an polly.js adapter for playwright. here's the repo: https://github.com/redabacha/polly-adapter-playwright. it's published on npm with the name polly-adapter-playwright. i hope you find it useful.
regards,
reda

@redabacha that's awesome! Thank you for taking the time to write this. I will add a section for it in the docs 😄


add oname to store original file name

Relate to issues #21

Thanks to the contribute! I have reviewed your code and seems ok, but need to edit the property name to prevent confuse other people.

Merged! Thanks for contribution.

I will update documentation and publish to NPM registry after get back to home.

Thank you, I'm waiting for published version