Create a guide for authoring in Haskell

Create an article similar to https://docs.codewars.com/languages/python/authoring/ but for Haskell.
Would also be nice to have a separate tutorial on how to create custom Gens for QuickCheck.
Maybe @JohanWiltink would like to help on this?

I would love to see a generator which accepts [(Gen s, Int)] and uses a set of generators, generates n inputs from each of them, shuffles them, and uses the inputs to feed test cases.
For example, for "Is a number prime?" kata, I'd like to have a composite generator built like compositeGen([(genPrimes, 100), (genOddComposites, 100), (genNegativePrime, 10), (genSquareOfAPrime, 20)]) or something like this, and it would run test cases over 230 shuffled inputs.
Bonus points if such generator were able to return not only [Int], but also [(Int, Bool)] (input + expected answer) or even `[(Int, Bool, String)] (input, expected answer, and assertion message).

For example, for "Is a number prime?" kata, I'd like to have a composite generator built like compositeGen([(genPrimes, 100), (genOddComposites, 100), (genNegativePrime, 10), (genSquareOfAPrime, 20)]) or something like this, and it would run test cases over 230 shuffled inputs.

That's not quite how it works... You would make all of those different generators run on a different forAll, at the easiest. But it wouldn't work quite like that.
But I'll make something to make you happy :P

I appreciate the vote of confidence in my technical ability. Writing documentation is not my strong point, and I don't have a perspective of all available documentation, so I might have difficulty not doing double work, linking to relevant portions elsewhere instead.
Ideally, someone would interview me on Haskell-specific techniques, ideas and pitfalls, but I have no ambition to write a Haskell authoring tutorial by myself. If I were to write a QuickCheck Generator Tutorial, it would probably be rather technical, not really a simple HowTo useful for a beginner, more of a reference guide ( which would mostly duplicate already available Hackage documentation ).
Also, I tend to lose myself in details and write overly lengthy documents, explaining too much. Editing anything I write by someone else would be a good idea.

That's not quite how it works

That can work just fine. Have a look at oneof

( and there are other constructs to do this within a single it-header )

I know that, but I meant that you can't specify specifically, "Oh, this generator should be included 20 times, this one 15, this one 30, etc." That's what he mentioned.

I meant that you can't specify specifically, "Oh, this generator should be included 20 times, this one 15, this one 30, etc."

Really? is it not possible to create such generator? It wouldn't be the first time when my misunderstanding of Haskell and related mechanism would make me expect things which cannot be done (in a feasible way), but, uh... I would expect such combining generator to be possible to create ;) I might be wrong though (I am not a Haskell guy), but I will definitely try to prove one of us two right :)
@JohanWiltink if you do not mind being nagged on gitter from time to time, Steffan or me can create some stub, and ask you for some help with technical details, if you don't mind?

You could do that, but it wouldn't be a forAll, it'd be a for_ over a shuffled list of cases. I've done that in specific instances.
Generally, I would randomise the counts by using frequency rather than generating a list and shuffle it, but that's mostly because I like more randomness better than less. Assumptions in generators have a way of turning on you and biting. If you want exactly ( or at least ) 20 squares of primes, do it in a separate withMaxSuccess 20 $ forAll with fully random primes, but that might generate the same 20 primes anyway. So just run a big enough test that it'll even out.

I guess it's the difference between random tests and randomised fixed tests. Ideally, do both.

You could do that, but it wouldn't be a forAll, it'd be a for_ over a shuffled list of cases. I've done that in specific instances.

Could you share a link to such tests?

Let me come up with something real quick.

https://www.codewars.com/kumite/5fee0ce19e5d0b001cf33d6b?sel=5fee0ce19e5d0b001cf33d6b
The last shouldBe 1 1 is just to keep the return type of the do block correct.

And here's what you were kind of thinking of in the first comment: https://www.codewars.com/kumite/5fee0f2e575c0b0021ace67d/?sel=5fee0f2e575c0b0021ace67d
It's a bit different, but similar.

Generally, I would randomise the counts by using frequency rather than generating a list and shuffle it, but that's mostly because I like more randomness better than less.

The specific reason why I do not like this approach is because I believe it leads to heavily unbalanced test suites. If I decided that I want to generate exactly x primes, y composites, and z negative values, I can control the overall complexity of the suite quite accurately, without any requirements on what value in each generated group is.
Having random sizes of each group IMO leads to unbalanced suites, which depend on luck and end up failing/passing 50/50 of runs. Or for "is a palindrome" kata author risks that no palindrome gets generated. Or for "Flou" kata, times of a correct solution vary between 4 and 20 seconds. Or for "roman numerals" kata, you risk that you get no input of a form "XC" or "CM" or "IV".  That's why I prefer test suites (and generators) which guarantee coverage of generated types of inputs, ensure that there's enough of difficult cases, and guarantee that there's not too many of them. Otherwise we got users frustrated that their correct solution times out, and authors replying that it's not true because it works for them, and newbies complaining that "their solution is identical to top voted one but it's not accepted".
I simply think that unbalanced test suites with random, non-guaranteed coverage, are too common, they cause too many problems, and there's too little effort to prevent them.

I wouldn't mind being nagged on Gitter from time to time.
I think the missus would mind if I locked myself in my cage on New Year's Eve - we have some Back To The Future viewing planned - so let me get back to you on that generator Next Year. ( Best Wishes for everyone in the meantime. :)

Some of your concerns could ( and, I think, should ) be addressed with fixed tests. If you have defined edge cases like "XC" &c, those should be fixed tests.
Others could be addresses with fixed tests, random tests generated with constraints, tests in a random order, a random number of tests and any combination or permutation of the above. There's nothing wrong with that.
When random tests time out, they probably are too big. There is very often no reason to generate random tests that will take multiple seconds. If you want to discriminate inefficient solutions from efficient ones, the efficient ones can and should probably run in a matter of milliseconds. Fewer bigger tests may be more appropriate than more smaller ones, make the same distinction in efficiency and run a lot faster for efficient solutions ( only ). Quite possibly fully random tests are not the best way to test performance.
But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.
So there may be a number of concerns you're trying to address with tests. Not all tests are created equal, nor are all concerns. Every concern may need appropriate tests, which may mean different types of them. And ruling out fully random tests because they do not address other concerns means missing out on finding those totally weird edge cases a user solution might have ( and your reference solution might not ).
In short, I think you're trying to solve too many problems with too few ( types of ) tests. Test for each possible problem separately. Anything that isn't a performance test should not take that much time, and even performance tests should not take much time for correctly efficient solutions.
Related: A test suite may not find problems every time it runs. I hope solvers that find edge cases that occur intermittently report them to be included as fixed tests. I can dream, can't I?

Some of your concerns could ( and, I think, should ) be addressed with fixed tests. If you have defined edge cases like "XC" &c, those should be fixed tests.
Others could be addresses with fixed tests, random tests generated with constraints, tests in a random order, a random number of tests and any combination or permutation of the above. There's nothing wrong with that.
When random tests time out, they probably are too big. There is very often no reason to generate random tests that will take multiple seconds. If you want to discriminate inefficient solutions from efficient ones, the efficient ones can and should probably run in a matter of milliseconds. Fewer bigger tests may be more appropriate than more smaller ones, make the same distinction in efficiency and run a lot faster for efficient solutions ( only ). Quite possibly fully random tests are not the best way to test performance.
But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.
So there may be a number of concerns you're trying to address with tests. Not all tests are created equal, nor are all concerns. Every concern may need appropriate tests, which may mean different types of them. And ruling out fully random tests because they do not address other concerns means missing out on finding those totally weird edge cases a user solution might have ( and your reference solution might not ).
In short, I think you're trying to solve too many problems with too few ( types of ) tests. Test for each possible problem separately. Anything that isn't a performance test should not take that much time, and even performance tests should not take much time for correctly efficient solutions.
Related: A test suite may not find problems every time it runs. I hope solvers that find edge cases that occur intermittently report them to be included as fixed tests. I can dream, can't I?

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

Some of your concerns could ( and, I think, should ) be addressed with fixed tests.

I agree with this part, yes.

If you have defined edge cases like "XC" &c, those should be fixed tests.

I disagree with this part. Mostly because, if we stick to this example, such fixed test can be skipped by counting (and there's an issue raised about exactly this problem, in a 4 kyu kata). There are kata where tricky cases constitute a significant part of a domain, but small enough to not get generated randomly. Having them covered just with fixed tests allows to pass them by counting or hardcoding only two of them, and resubmitting a couple of times until lucky.
One example of such kata is "Next bigger number with the same digits", which can be solved by iterating over n += 9 or by generating a series of permutations.

But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.

This is true, and I am not saying to avoid such kind of tests. I am just saying it should not be the only type of random tests, because if they are, then tests have poor coverage and/or are possible to pass by counting or hardcoding of small set of inputs.

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

There's nothing to do there yet, because article is not started yet (unless @Steffan153 have already started working on it?). Hopefully when someone gets to it, they will ask for specific help. Thanks!

Some of your concerns could ( and, I think, should ) be addressed with fixed tests.

I agree with this part, yes.

If you have defined edge cases like "XC" &c, those should be fixed tests.

I disagree with this part. Mostly because, if we stick to this example, such fixed test can be skipped by counting (and there's an issue raised about exactly this problem, in a 4 kyu kata). There are kata where tricky cases constitute a significant part of a domain, but small enough to not get generated randomly. Having them covered just with fixed tests allows to pass them by counting or hardcoding only two of them, and resubmitting a couple of times until lucky.
One example of such kata is "Next bigger number with the same digits", which can be solved by iterating over n += 9 or by generating a series of permutations.

But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.

This is true, and I am not saying to avoid such kind of tests. I am just saying it should not be the only type of random tests, because if they are, then tests have poor coverage and/or are possible to pass by counting or hardcoding of small set of inputs.

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

There's nothing to do there yet, because article is not started yet (unless @Steffan153 have already started working on it?). Hopefully when someone gets to it, they will ask for specific help. Thanks!

Some of your concerns could ( and, I think, should ) be addressed with fixed tests.

I agree with this part, yes.

If you have defined edge cases like "XC" &c, those should be fixed tests.

I disagree with this part. Mostly because, if we stick to this example, such fixed test can be skipped by counting (and there's an issue raised about exactly this problem, in a 4 kyu kata). There are kata where tricky cases constitute a significant part of a domain, but small enough to not get generated randomly. Having them covered just with fixed tests allows to pass them by counting or hardcoding only two of them, and resubmitting a couple of times until lucky.
One example of such kata is "Next bigger number with the same digits", which can be solved by iterating over n += 9 or by generating a series of permutations.

But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.

This is true, and I am not saying to avoid such kind of tests. I am just saying it should not be the only type of random tests, because if they are, then tests have poor coverage and/or are possible to pass by counting or hardcoding of small set of inputs.

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

There's nothing to do there yet, because article is not started yet (unless @Steffan153 have already started working on it?). Hopefully when someone gets to it, they will ask for specific help. Thanks!

Some of your concerns could ( and, I think, should ) be addressed with fixed tests.

I agree with this part, yes.

If you have defined edge cases like "XC" &c, those should be fixed tests.

I disagree with this part. Mostly because, if we stick to this example, such fixed test can be skipped by counting (and there's an issue raised about exactly this problem, in a 4 kyu kata). There are kata where tricky cases constitute a significant part of a domain, but small enough to not get generated randomly. Having them covered just with fixed tests allows to pass them by counting or hardcoding only two of them, and resubmitting a couple of times until lucky.
One example of such kata is "Next bigger number with the same digits", which can be solved by iterating over n += 9 or by generating a series of permutations.

But where fully random tests shine is in finding unknown, unimagined even, edge cases. Any constraint on the randomness means you're likely to miss possible edge cases. Any assumptions you make will probably rule out certain classes of them.

This is true, and I am not saying to avoid such kind of tests. I am just saying it should not be the only type of random tests, because if they are, then tests have poor coverage and/or are possible to pass by counting or hardcoding of small set of inputs.

I've lost track a bit where I might be able to help with a specific implementation.
If you have a specific test suite you would like help on, could you make it into a kumite or a translation and let me know to have a look at the requirements and the existing implementation? ( If the requirements are clear, there need not even be any implementation yet. )

There's nothing to do there yet, because article is not started yet (unless @Steffan153 have already started working on it?). Hopefully when someone gets to it, they will ask for specific help. Thanks!

Nope, I'm waiting to finish the JS one first. Still got some TODOs in it.

Nope, I'm waiting to finish the JS one first. Still got some TODOs in it.

OK, we are mostly in agreement. You are trying to catch cheaters more than I am. Catching cheaters is a very minor hobby for me; they will always find a way and I have no interest in conducting a war of attrition I can't win.

OK, we are mostly in agreement. You are trying to catch cheaters more than I am. Catching cheaters is a very minor hobby for me; they will always find a way and I have no interest in conducting a war of attrition I can't win.

@hobo: your generator, sir.
https://www.codewars.com/kumite/5ff8f19bc36c9900212a7634?sel=5ff8f19bc36c9900212a7634

@hobo: your generator, sir.
https://www.codewars.com/kumite/5ff8f19bc36c9900212a7634?sel=5ff8f19bc36c9900212a7634


Update last, edge-case files without ASF headers.

Description
Adhere to project Apache 2 license header policy.
Related issue and scope

[ ] I opened an issue to propose and discuss this change (#????)

My changes affect the following components

[ ] API
[ ] Controller
[ ] Message Bus (e.g., Kafka)
[ ] Loadbalancer
[ ] Invoker
[ ] Intrinsic actions (e.g., sequences, conductors)
[ ] Data stores (e.g., CouchDB)
[ ] Tests
[ ] Deployment
[ ] CLI
[ ] General tooling
[ ] Documentation
[X] Apache project compliance

Types of changes

[ ] Bug fix (generally a non-breaking change which closes an issue).
[ ] Enhancement or new feature (adds new functionality).
[ ] Breaking change (a bug fix or enhancement which changes existing behavior).

Checklist:

[X] I signed an Apache CLA.
[ ] I reviewed the style guides and followed the recommendations (Travis CI will check :).
[ ] I added tests to cover my changes.
[ ] My changes require further changes to the documentation.
[ ] I updated the documentation where necessary.

Codecov Report

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

@@          Coverage Diff           @@
##           master   #3684   +/-   ##
======================================
  Coverage    74.5%   74.5%
======================================
  Files         126     126
  Lines        5994    5994
  Branches      392     392
======================================
  Hits         4466    4466
  Misses       1528    1528

Continue to review full report at Codecov.

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


The 25 items issue

I'm getting this error.
Member must have length less than or equal to 25, Member must have length greater than or equal to 1.
Any idea how to handle it? =)

Hello @dm-grinko, allow me to ask you a few questions to help me understand what's happening:

where do you get this error?
what command are you using?
what input are you passing?

Thanks

command line
aws dynamodb batch-write-item --request-items file://5000.json
a huge file of 5000 items

Thanks @dm-grinko.
It seems that there's a limit on the number of items that you can send in one request (25 top: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html)
You should split your source file into multiple files with 25 objects (max) each.
It might be nice to have this feature supported in the tool, would you have some time to contribute with a PR?

I have found another solution. I have created nodejs app where I am using put-item
const fs = require("fs"), shell = require('shelljs'),
    table = "dictionary", filename = "./500.json";

function read() {
    fs.readFile(filename, "utf8", function (err, data) {
        const items = JSON.parse(data);
        items.forEach(item => {
            const query = `
                aws dynamodb put-item \
                --table-name ${table}  \
                --item '{"Rank": {"S": "${item.Rank}"},"Word": {"S": "${item.Word}"},"Part of speech": {"S": "${item['Part of speech']}"},"Frequency": {"S": "${item.Frequency}"},"Dispersion": {"S": "${item.Dispersion}"}}' \
                --return-consumed-capacity TOTAL
            `;
            shell.exec(query)
        });
    });
}

read();

Thanks @dm-grinko,
I'll re-open this one for now. Just in case someone is looking for something similar and as a reminder that we might want to have a more integrated solution.

I improved @dm-grinko solution as follow:
const fs = require("fs"),
    shell = require("shelljs"),
    table = "tableName",
    filename = "./data.json";

function exec() {
    fs.readFile(filename, "utf8", function (err, data) {
        const items = JSON.parse(data);
        var counter = 0, req = {};
        req[table] = [];
        items.forEach(item => {
            counter++;
            var obj = {}, str = '';
            for (var key in item) {
                if (!isNaN(item[key]) && ("" + item[key]).trim().length > 0) {
                    obj[key] = {
                        "N": item[key]
                    };
                } else {
                    obj[key] = {
                        "S": item[key]
                    };
                }
            }
            req[table].push({
                PutRequest: {
                    Item: obj
                }
            });
            if (counter % 25 === 0) {
                str = JSON.stringify(req);
                const query = `aws dynamodb batch-write-item --request-items '${str}'`;
                console.log(`Write ${counter / 25}th 25 items.`);
                shell.exec(query);
                req[table] = [];
            }
        });
        if (counter % 25 > 0) {
            str = JSON.stringify(req);
            console.log(`Write ${counter % 25} rest items.`);
            const query = `aws dynamodb batch-write-item --request-items '${str}'`;
            shell.exec(query);
            req[table] = [];
        }
    });
}

exec();

I improved @dm-grinko solution as follow:
const fs = require("fs"),
    shell = require("shelljs"),
    table = "tableName",
    filename = "./data.json";

function exec() {
    fs.readFile(filename, "utf8", function (err, data) {
        const items = JSON.parse(data);
        var counter = 0, req = {};
        req[table] = [];
        items.forEach(item => {
            counter++;
            var obj = {}, str = '';
            for (var key in item) {
                if (!isNaN(item[key]) && ("" + item[key]).trim().length > 0) {
                    obj[key] = {
                        "N": item[key]
                    };
                } else {
                    obj[key] = {
                        "S": item[key]
                    };
                }
            }
            req[table].push({
                PutRequest: {
                    Item: obj
                }
            });
            if (counter % 25 === 0) {
                str = JSON.stringify(req);
                const query = `aws dynamodb batch-write-item --request-items '${str}'`;
                console.log(`Write ${counter / 25}th 25 items.`);
                shell.exec(query);
                req[table] = [];
            }
        });
        if (counter % 25 > 0) {
            str = JSON.stringify(req);
            console.log(`Write ${counter % 25} rest items.`);
            const query = `aws dynamodb batch-write-item --request-items '${str}'`;
            shell.exec(query);
            req[table] = [];
        }
    });
}

exec();

I did some modifications to your code @mjza
Copy the code below and save it as dynamo-chunk.js
Now you just need to pass the file converted by this library (json-dynamo-putrequest) and pass the table name. It'll create the chunk files and automatically upload to dynamodb into your aws account.

const fs = require("fs");
const shell = require("shelljs");

function processFile(filename, table) {
  fs.readFile(filename, "utf8", (err, data) => {
    if (err) {
      console.log("Cannot parse", err);
      process.exit(1);
    }

    const items = JSON.parse(data);

    let counter = 0;
    let req = {};
    let str = "";

    req[table] = [];

    items[table].forEach((item) => {
      counter++;
      req[table].push(item);

      if (counter % 25 === 0) {
        str = JSON.stringify(req);
        fs.writeFileSync("./tmp.json", str);

        console.log(`Write ${counter / 25}th 25 items.`);

        const exec =
          "aws dynamodb batch-write-item --request-items file://tmp.json";
        shell.exec(exec);

        req[table] = [];
      }
    });

    if (counter % 25 > 0) {
      str = JSON.stringify(req);
      fs.writeFileSync("./tmp.json", str);

      console.log(`Write ${counter % 25} rest items.`);

      const exec =
        "aws dynamodb batch-write-item --request-items file://tmp.json";
      shell.exec(exec);

      req[table] = [];
    }
  });
}

if (!process.argv[2] || !process.argv[3]) {
  console.log("Missing arguments");
  console.log("Usage: node dynamo-chunk.js file tableName");

  process.exit(1);
}

processFile(process.argv[2], process.argv[3]);


Routing Extensions to custom volunteer groups

Currently extensions can be assigned to a single phone number
Looking for the ability to set up volunteer groups for extensions
For example : Press 4 to speak to someone in public relations
And it routes to a user defined volunteer group "Public Relations" that follows all the same setup and scheduling rules any other volunteer group does - and in this case route to members of a public relations committee, not just phone line volunteers. Not all phone line volunteers are equally equipped to answer questions that the PR committees would be able to handle.
Technically you can do this via setting up a second phone service that is routed to as the single number on extensions now - but that is an additional complication that most service bodies do not want to deal with, especially if they are looking to onboard YAP as a simpler solution.

I have an idea of how I want to do this.  My hope is to implement it sometime in the future.

Hopefully that mean the near future because some of us are olde 8^)

For this first pass, this is what I'm thinking.

Server admins will have the ability to insert a database record into a new table called committee  The user interface will be added in the future.
Only Yap admin users will be able to "see" this.  BMLT users use the BMLT to determine permissions for "seeing" service bodies.  This could be expanded in the future if need be.

However it works best on your end, I surrender to - but here was how I originally envisioned it.
Could you instead allow for an extension to be linked to a volunteer group - possibly through config, and later add ui so you do not having to do that through config?
Then you only need to set up an extensions parameter that loads out of config and has a volunteer group name associated with it.
The extensions parameter might need to be an array that includes extension, volunteer group name, text for the voice to read for that extension (if not running a mp3), call routing type.
Call comes in; when config is loaded, so are extension parameters; play mp3 or voice the text; parse the tone; if there's an extension matched, go directly to routing to the specific volunteer group.

The way I got around not having this feature in Yap was We got a 2nd Twilio number that acted like a Phonelines and routed the calls.
The setup was very easy from with twilio.
We needed a second number anyway now so it seems to have solved our issue for the moment.
ILS
Eddie

On Aug 23, 2022, at 3:13 PM, Danny Gershman @.***> wrote:
For this first pass, this is what I'm thinking.
Server admins will have the ability to insert a database record into a new table called committee The user interface will be added in the future.
Only Yap admin users will be able to "see" this. BMLT users use the BMLT to determine permissions for "seeing" service bodies. This could be expanded in the future if need be.
—
Reply to this email directly, view it on GitHub https://github.com/bmlt-enabled/yap/issues/584#issuecomment-1225050697, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMCCZRGD76AZA3WF2BJUEG3V2VZJ5ANCNFSM5RAOPPIA.
You are receiving this because you commented.

However it works best on your end, I surrender to - but here was how I originally envisioned it.
Could you instead allow for an extension to be linked to a volunteer group - possibly through config, and later add ui so you do not having to do that through config?
Then you only need to set up an extensions parameter that loads out of config and has a volunteer group name associated with it.
The extensions parameter might need to be an array that includes extension, volunteer group name, text for the voice to read for that extension (if not running a mp3), call routing type.
Call comes in; when config is loaded, so are extension parameters; play mp3 or voice the text; parse the tone; if there's an extension matched, go directly to routing to the specific volunteer group.

The UI for adding volunteers, configuration, voicemail, reports will all work the same.  The only part that isn't managed through the UI is the adding of the committee.

Is it better on your end to manually create a service body in the database to access the routing than to link to a volunteer group defined within the relevant service body?
As I said before, however it makes most sense on your end to do, I am good with. It just is something I have seen requested and been asked about more than a few times - to be able to press 4 and go to a group of committee members, usually PR.
Now part of my reasoning for the approach I was taking with this is in manually creating service bodies, it may limit the scaling of the extensions. Some areas have extensions for more than public relations - they may have it for their convention, or for some other purpose. Having service bodies able to create volunteer groups that are specifically purposed to an extension allows flexibility in having multiple extensions - or even layered extensions later (i.e. extensions that appear after giving location so you can press 4 for the local public relations committee as a sub-option of talk to a volunteer --- without knowing the area name) --- just thinking down the road with that one.
That was a bit more jumbled than I like - but I trust you get the gist and look forward to how you set about solving this.

You make good points.  Going to think about this.

So here is the typical default flow.
Press 1 to find someone to talk to.
Press 2 to find a meeting.
You press 1, then it asks for location info, which determines the service body.  At that point you could determine if there were committees, but now you have another menu to add, because you need to clarify "what you want to talk to".

The other way is to make it the top menu, however, at that point, you don't know the service body because you haven't collected the information yet.  Which means you don't know if there is actually a committee to route to.

here is the "as a service body" implementation https://github.com/bmlt-enabled/yap/commit/7f13361783a4b8b85f0d2a0210734ab9573b3fa7

So to sort out the order of operations might take some reorganizing of the call flow - not sure if you want to go there but it may work out better in the long run.

Call comes in, play mp3 or voice of welcome.
2a. If JFT is enabled : Press 1 to speak to an addict or find a meeting, Press 2 for JFT
2b. If no JFT, or if there is JFT and option 1 is selected, state "To help you find a meeting or an addict to speak with, press 1 to search by city/state or press 2 to search by zip
Now that you have the local info, go through options of press 1 to search for a meeting, press 2 to speak to a volunteer, press 3 to speak to a member of our Public Relations, etc.

In that scenario, only service bodies that have a defined extension get more than options 1 or 2. That allows scaling to whatever committees an area may find the need for. You can likewise utilize shared volunteer groups as fallbacks if areas want to use a regional committee or a shared resource.
Most of the work for this just ends up in the call flow reorganization - which could improve things overall anyways.

Not going to reorganize the call flow for this feature or at all.  There are too many other dependencies.
From: spiritualtheory @.>
Date: Tuesday, August 23, 2022 at 11:52 PM
To: bmlt-enabled/yap @.>
Cc: Danny Gershman @.>, Assign @.>
Subject: Re: [bmlt-enabled/yap] Routing Extensions to custom volunteer groups (Issue #584)
So to sort out the order of operations might take some reorganizing of the call flow - not sure if you want to go there but it may work out better in the long run.

Call comes in, play mp3 or voice of welcome.
2a. If JFT is enabled : Press 1 to speak to an addict or find a meeting, Press 2 for JFT
2b. If no JFT, or if there is JFT and option 1 is selected, state "To help you find a meeting or an addict to speak with, press 1 to search by city/state or press 2 to search by zip
Now that you have the local info, go through options of press 1 to search for a meeting, press 2 to speak to a volunteer, press 3 to speak to a member of our Public Relations, etc.

In that scenario, only service bodies that have a defined extension get more than options 1 or 2. That allows scaling to whatever committees an area may find the need for. You can likewise utilize shared volunteer groups as fallbacks if areas want to use a regional committee or a shared resource.
Most of the work for this just ends up in the call flow reorganization - which could improve things overall anyways.
—
Reply to this email directly, view it on GitHubhttps://github.com/bmlt-enabled/yap/issues/584#issuecomment-1225156968, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAOD3O7LB3J4ZSXDJVS24RTV2WMBBANCNFSM5RAOPPIA.
You are receiving this because you were assigned.Message ID: @.***>

Is the call flow that entangled that it can't be reorganized? Just curious. Without doing that, I don't see being able to scale this easily to the area level for the reasons that you stated - which was the primary need. I mean, you could do as you mentioned and add an additional prompt behind the location search of talking to an addict - and that would solve for the issue, I just hate adding distance from the initial call to an addict connecting with a volunteer if that's the caller --- and reorganizing the flow, especially where no JFT is enabled, didn't really add distance (length of time to connect).
With all that said, it could be worked out to be regional PR based on your implementation - just lacks simple location based scalability from what I can tell. So a partial solution - but still a solution. All good.

There are other options that don’t use location that inspired this design and ultimately will not force my hand to make such a refactor for this feature.
Get Outlook for iOShttps://aka.ms/o0ukef

From: spiritualtheory @.>
Sent: Wednesday, August 24, 2022 12:22:32 AM
To: bmlt-enabled/yap @.>
Cc: Danny Gershman @.>; Assign @.>
Subject: Re: [bmlt-enabled/yap] Routing Extensions to custom volunteer groups (Issue #584)
Is the call flow that entangled that it can't be reorganized? Just curious. Without doing that, I don't see being able to scale this easily to the area level for the reasons that you stated - which was the primary need. I mean, you could do as you mentioned and add an additional prompt behind the location search of talking to an addict - and that would solve for the issue, I just hate adding distance from the initial call to an addict connecting with a volunteer if that's the caller --- and reorganizing the flow, especially where no JFT is enabled, didn't really add distance (length of time to connect).
With all that said, it could be worked out to be regional PR based on your implementation - just lacks simple location based scalability from what I can tell. So a partial solution - but still a solution. All good.
—
Reply to this email directly, view it on GitHubhttps://github.com/bmlt-enabled/yap/issues/584#issuecomment-1225172671, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAOD3O6LVECRU3DZZND5ZRDV2WPQRANCNFSM5RAOPPIA.
You are receiving this because you were assigned.Message ID: @.***>

A request for a feature like this has come up again. On our old Helpline system we had an option for people looking for PI to hit a menu number and the next question would be to ask for their area code to get a general location. Obviously that is outmoded, but we would be ok having a menu item for PI that just goes to a voicemail box or routes to a special group of volunteers independent of location (each of the PI volunteers can handle the whole state of NJ).


Documentation not detailed

It would be great to have a full explained text on how to use this plugin and some example. I am new to this, so i want to understand how it works. thanks

Please check out the README. I've updated it with an example on how to implement the onSuccess and onError functions. All the information you need is on the README. Install the plugin, then call the callNumber function as shown.

Thanks! closed#22

Closed#22


feat: solution added for testing

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[X] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[X] My changes do not use shortened URLs or affiliate links.

@paulywill There is already a PR (#34758) for a solution which passes the required tests.  What do you think about that one?

@RandellDawson Let's merge the other one. :)


add time interpolation support for ns-render interpolate

This PR addresses Issue #3418, where the ns-render interpolate mode was unable to render 4D datasets.

@Tavish9 Could you fix the formatting issue using ruff and rebase?

@Tavish9 Could you fix the formatting issue using ruff and rebase?

Hi, @jb-ye, all things has been done. Just a quick reminder about the review. Thanks~


Added Package.swift and updated gitignore

Added Package.swift for use with the Swift Package Manager. It's still
in development but I'm sure some great news will be announced at WWDC
regarding an Xcode update and integration with the SPM.
Also, added .xcodeproj to the gitignore file so that developers may
create a local Xcode project on their machine using swift build -x.

Hey @califrench, I appreciate your contribution.  At this time I'm working on a total restructuring of the project, so I think it's best to wait on this one.  Thanks!


Handle whitespaces in the names provided in Throttling Tiers during a product upgrade

Description:
When names are provided with whitespaces in the following files while defining tiers in API-Manager 1.10.0. execution policies are not deployed successfully after an upgrade to API-Manager 2.2.0

app-tiers.xml
res-tiers.xml
tiers.xml

Following error is logged when the upgraded API-Manager pack is started.
ERROR - EventProcessorDeployer Execution plan is not deployed and in inactive state : carbon.super_api_1 per minute_default.siddhiql
org.wso2.carbon.event.processor.core.exception.ExecutionPlanConfigurationException: Execution plan name 'carbon.super_resource_1 per minute_default' contains whitespaces. Please remove whitespaces.

Affected Product Version:
API-Manager 2.0.0 onwards based on the upgrade
Steps to reproduce:
Create throttle tiers with whitespaces in the names in API-Manager 1.10.0
Upgrade the pack to 2.2.0

Fixed with https://github.com/wso2-support/product-apim/pull/261

This has been fixed in the migration client.


Improve the accessibility of the previous/next arrows on mainstream guides

Changes

Link title text size changed from core-27 to core-19 with font-weight of bold.
Link label offset to match position of link title text.
All text and icon now left aligned

What
We know from our user research that the current next / previous arrows on mainstream guides can be improved.
There's two problems:

They point to the sidebar content (particularly step by steps) which is confusing
Users zooming into the page can only see one at a time

Why
One of our goals this quarter is to optimise the user-facing step by step pattern.
Ticket: https://trello.com/c/IELXDsqb/701-improve-the-accessibility-of-the-previous-next-arrows-on-mainstream-guides
Remember to update the CHANGELOG if your change needs to be listed in the next version of the gem.

Component guide for this PR:
https://govuk-publishing-compon-pr-410.herokuapp.com/component-guide/previous_and_next_navigation

@andysellick - made the changes requested


fix(docs-app): upgrade packages to support angular 17

Description
This Merge Request includes updates to our project's dependencies to support Angular 17. The library and tool versions have been adjusted to ensure compatibility with the latest Angular release
What's included?

This changes include the upgrade to package.json to support Angular 17.

Test Steps

[ ] npm ci (to install dependencies exactly as per package-lock.json)
[ ] npm run start (to start the application)
[ ] then this (describe any additional steps if needed)
[ ] finally this (describe any final steps for testing)

General Tests for Every PR

[x] npm run start still works.
[x] npm run lint passes.
[ ] npm run stylelint passes.
[x] npm test passes and code coverage is not lower.
[ ] npm run build still works.

Screenshots or link to StackBlitz/Plunker

@vicalcantFrontEnd also please update the README where it has the table for angular support. Before merging we will rebase with the term BREAKING so the release will update to next Major version.


ask for ansible-operator for UBI9 , so far still only see UBI8, need operator based on UBI9/RHEL9

Feature Request
Describe the problem you need a feature to resolve.

we are running on OpenShift Platform 4.13 which is based on UBI9, but the current latest version available is still based on UBI8
https://quay.io/repository/operator-framework/ansible-operator?tag=latest&tab=tags
can you let me know when can expect to have new image available based on UBI9/RHEL9?
Describe the solution you'd like.

wait for new version of operator available based on UBI9/RHEL9

ansible-operator

When can we expect ansible-operator image based on UBI9 be available ?

Requesting the same, when can have ubi 9 based ansible-operator image?

I noticed that the "main" branch was bumped to UBI 9 on Oct 10, 2024.
https://github.com/operator-framework/ansible-operator-plugins/commit/0818d9aba49373b9007851aeca666708494c1464
What is the expected ETA for the next release of "ansible-image" to be tagged that will include this change to UBI 9?  It has been 3 months since "v1.35" was tagged.
Thanks!


JTD - Schema with discriminator does not compile

Using the example from :

https://ajv.js.org/guide/getting-started.html
https://ajv.js.org/json-type-definition.html#discriminator-form

Am i doing something wrong?
What version of Ajv are you using? Does the issue happen if you use the latest version?
^8.2.0
Your code

const Ajv = require("ajv/dist/jtd");
const ajv = new Ajv();

const schema = {
  discriminator: "version",
  mappings: {
    1: {
      properties: {
        foo: { type: "string" },
      },
    },
    2: {
      properties: {
        foo: { type: "uint8" },
      },
    },
  },
};

const validate = ajv.compile(schema);
const data = {
    version: "1",
    foo: "bar"
}
const valid = validate(data);
if (!valid) console.log(validate.errors);

Validation result, data AFTER validation, error messages
Error: schema is invalid: data/discriminator must NOT have additional properties, data must have property 'ref', data must have property 'type', data must have property 'enum', data must have property 'elements', data must have property 'properties', data must have property 'optionalProperties', data must have property 'mapping', data must have property 'values', data must match a schema in
union

What results did you expect?
A successfull compilation
Are you going to resolve the issue?
Sorry i have no knowledge in AJV.

It's a mistake in the docs actually.
It is correct here: https://jsontypedef.com/docs/jtd-in-5-minutes/

Corrected https://github.com/ajv-validator/ajv/commit/0404a50be13b9079b0a4669e9e2cf04d79011b0c


Failed to find ar for aarch64-linux-android in :C:\xxx\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin

Describe the bug
Hello, when I ran the example on the official website, an error occurred.
Sorry, I may be a bit dense, I'll try to be as descriptive as possible
Failed to find ar for aarch64-linux-android in C:\Users\jinch\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin

The ndk in the SDK is already installed

Steps to reproduce
Follow the steps on the official website
cargo install<EMAIL_ADDRESS>flutter_rust_bridge_codegen create my_app
flutter run

The commands were also installed normally and successfully.
Then running ·lutter run gives the following error
Logs
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
Resolving dependencies...
  flutter_lints 3.0.2 (4.0.0 available)
  leak_tracker 10.0.0 (10.0.5 available)
  leak_tracker_flutter_testing 2.0.1 (3.0.5 available)
  leak_tracker_testing 2.0.1 (3.0.1 available)
  lints 3.0.0 (4.0.0 available)
  material_color_utilities 0.8.0 (0.11.1 available)
  meta 1.11.0 (1.15.0 available)
  test_api 0.6.1 (0.7.1 available)
  vm_service 13.0.0 (14.2.2 available)
Got dependencies!
9 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Launching lib\main.dart on 23013RK75C in debug mode...
Running Gradle task 'assembleDebug'...
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
ϵͳ�Ҳ���ָ����·����
ϵͳ�Ҳ���ָ����·����
ϵͳ�Ҳ���ָ�����ļ���
ϵͳ�Ҳ���ָ�����ļ���
Running pub get in "E:\code\flutter\flutter_rust\my_app\build\rust_lib_my_app\build\build_tool"
Resolving dependencies...
+ adaptive_number 1.0.0
+ args 2.4.2 (2.5.0 available)
+ async 2.11.0
+ build_tool 1.0.0 from path E:/code/flutter/flutter_rust/my_app/rust_builder/cargokit/build_tool
+ collection 1.18.0
+ convert 3.1.1
+ crypto 3.0.3
+ ed25519_edwards 0.3.1
+ fixnum 1.1.0
+ github 9.17.0 (9.24.0 available)
+ hex 0.2.0
+ http 1.1.0 (1.2.1 available)
+ http_parser 4.0.2
+ json_annotation 4.9.0
+ logging 1.2.0
+ meta 1.15.0
+ path 1.8.0 (1.9.0 available)
+ petitparser 5.4.0 (6.0.2 available)
+ source_span 1.10.0
+ string_scanner 1.2.0
+ term_glyph 1.2.1
+ toml 0.14.0 (0.15.0 available)
+ typed_data 1.3.2
+ version 3.0.0 (3.0.2 available)
+ yaml 3.1.2
Changed 25 dependencies!
7 packages have newer versions incompatible with dependency constraints.
Try `dart pub outdated` for more information.
Compiling bin/build_tool_runner.dart to kernel file bin/build_tool_runner.dill.
INFO: Precompiled binaries are disabled
INFO: Building rust_lib_my_app for aarch64-linux-android
SEVERE: ================================================================================
SEVERE: Cargokit BuildTool failed with error:
SEVERE: --------------------------------------------------------------------------------
SEVERE: Exception: Failed to find ar for aarch64-linux-android in C:\Users\jinch\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin
SEVERE: --------------------------------------------------------------------------------
SEVERE: #0      AndroidEnvironment.buildEnvironment (package:build_tool/src/android_environment.dart:109:7)
SEVERE: #1      RustBuilder._buildEnvironment (package:build_tool/src/builder.dart:195:18)
SEVERE: #2      RustBuilder.build (package:build_tool/src/builder.dart:160:26)
SEVERE: #3      ArtifactProvider.getArtifacts (package:build_tool/src/artifacts_provider.dart:71:39)
SEVERE: <asynchronous suspension>
SEVERE: #4      BuildGradle.build (package:build_tool/src/build_gradle.dart:35:23)
SEVERE: <asynchronous suspension>
SEVERE: #5      BuildGradleCommand.runBuildCommand (package:build_tool/src/build_tool.dart:65:5)
SEVERE: <asynchronous suspension>
SEVERE: #6      BuildCommand.run (package:build_tool/src/build_tool.dart:37:5)
SEVERE: <asynchronous suspension>
SEVERE: #7      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
SEVERE: <asynchronous suspension>
SEVERE: #8      runMain (package:build_tool/src/build_tool.dart:251:5)
SEVERE: <asynchronous suspension>
SEVERE: --------------------------------------------------------------------------------
SEVERE: BuildTool arguments: [build-gradle]
SEVERE: ================================================================================
[CXX1101] NDK at C:\Users\jinch\AppData\Local\Android\sdk\ndk\23.1.7779620 did not have a source.properties file
[CXX1101] NDK at C:\Users\jinch\AppData\Local\Android\sdk\ndk\23.1.7779620 did not have a source.properties file
[CXX1101] NDK at C:\Users\jinch\AppData\Local\Android\sdk\ndk\23.1.7779620 did not have a source.properties file
[CXX1101] NDK at C:\Users\jinch\AppData\Local\Android\sdk\ndk\23.1.7779620 did not have a source.properties file
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app-debug.apk...
Debug service listening on ws://<IP_ADDRESS>:61974/0snWKJtBN1Y=/ws
Syncing files to device 23013RK75C...
E/flutter (23873): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'librust_lib_my_app.so': dlopen failed: library "librust_lib_my_app.so" not found
E/flutter (23873): #0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:43)
E/flutter (23873): #1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12)
E/flutter (23873): #2      new ExternalLibrary.open (package:flutter_rust_bridge/src/platform_types/_io.dart:39:47)
E/flutter (23873): #3      loadExternalLibraryRaw (package:flutter_rust_bridge/src/loader/_io.dart:56:28)
E/flutter (23873): #4      loadExternalLibrary (package:flutter_rust_bridge/src/loader/_io.dart:14:10)
E/flutter (23873): #5      BaseEntrypoint._loadDefaultExternalLibrary (package:flutter_rust_bridge/src/main_components/entrypoint.dart:129:13)
E/flutter (23873): #6      BaseEntrypoint.initImpl (package:flutter_rust_bridge/src/main_components/entrypoint.dart:48:31)
E/flutter (23873): #7      RustLib.init (package:my_app/src/rust/frb_generated.dart:25:20)
E/flutter (23873): #8      main (package:my_app/main.dart:6:17)
E/flutter (23873): #9      _runMain.<anonymous closure> (dart:ui/hooks.dart:301:23)
E/flutter (23873): #10     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
E/flutter (23873): #11     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
E/flutter (23873):
I/.example.my_app(23873): ProcessProfilingInfo new_methods=1070 is saved saved_to_disk=1 resolve_classes_delay=8000
I/.example.my_app(23873): This is non sticky GC, maxfree is 33554432 minfree is 8388608
W/FinalizerDaemon(23873): type=1400 audit(0.0:78156): avc:  denied  { getopt } for  path="/dev/socket/usap_pool_primary" scontext=u:r:untrusted_app_32:s0:c59,c257,c512,c768 tcontext=u:r:zygote:s0 tclass=unix_stream_socket permissive=0 app=com.example.my_app
W/.example.my_app(23873): ApkAssets: Deleting an ApkAssets object '<empty> and /product/app/MiuiContentCatcherMIUI15/MiuiContentCatcherMIUI15.apk' with 1 weak references
W/.example.my_app(23873): ApkAssets: Deleting an ApkAssets object '<empty> and /system_ext/priv-app/RtMiCloudSDK/RtMiCloudSDK.apk' with 1 weak references
W/.example.my_app(23873): ApkAssets: Deleting an ApkAssets object '<empty> and /system_ext/app/miuisystem/miuisystem.apk' with 1 weak references

Flutter Doctor
PS E:\code\flutter\flutter_rust> flutter doctor
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust
this source!
Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.19.6, on Microsoft Windows [版本 10.0.22631.3593], locale
    zh-CN)
    ! Warning: `flutter` on your path resolves to
      D:\scoop\apps\flutter-cn\3.19.6\bin\flutter, which is not inside your current Flutter
      SDK checkout at D:\scoop\apps\flutter-cn\current. Consider adding
      D:\scoop\apps\flutter-cn\current\bin to the front of your path.
    ! Warning: `dart` on your path resolves to D:\scoop\apps\flutter-cn\3.19.6\bin\dart,
      which is not inside your current Flutter SDK checkout at
      D:\scoop\apps\flutter-cn\current. Consider adding D:\scoop\apps\flutter-cn\current\bin
      to the front of your path.
[✓] Windows Version (Installed version of Windows is version 10 or higher)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✗] Chrome - develop for the web (Cannot find Chrome executable at
    .\Google\Chrome\Application\chrome.exe)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.9.6)
[✓] Android Studio (version 2023.3)
[✓] IntelliJ IDEA Community Edition (version 2024.1)
[✓] Connected device (3 available)
[✓] Network resources

! Doctor found issues in 2 categories.

### Expected behavior

By running the official website example and running successfully

### Generated binding code

_No response_

### OS

window 11

### Version of `flutter_rust_bridge_codegen`

2.0.0-dev.35

### Flutter info

```shell
PS E:\code\flutter\flutter_rust> flutter doctor -v
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust
this source!
[!] Flutter (Channel stable, 3.19.6, on Microsoft Windows [版本 10.0.22631.3593], locale
    zh-CN)
    • Flutter version 3.19.6 on channel stable at D:\scoop\apps\flutter-cn\current
    ! Warning: `flutter` on your path resolves to
      D:\scoop\apps\flutter-cn\3.19.6\bin\flutter, which is not inside your current Flutter
      SDK checkout at D:\scoop\apps\flutter-cn\current. Consider adding
      D:\scoop\apps\flutter-cn\current\bin to the front of your path.
    ! Warning: `dart` on your path resolves to D:\scoop\apps\flutter-cn\3.19.6\bin\dart,
      which is not inside your current Flutter SDK checkout at
      D:\scoop\apps\flutter-cn\current. Consider adding D:\scoop\apps\flutter-cn\current\bin
      to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 54e66469a9 (5 weeks ago), 2024-04-17 13:08:03 -0700
    • Engine revision c4cd48e186
    • Dart version 3.3.4
    • DevTools version 2.31.1
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn
    • If those were intentional, you can disregard the above warnings; however it is
      recommended to use "git" directly to perform update checks and upgrades.

[✓] Windows Version (Installed version of Windows is version 10 or higher)

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at C:\Users\jinch\AppData\Local\Android\sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: D:\Android-studio\jbr\bin\java
    • Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
    • All Android licenses accepted.

[✗] Chrome - develop for the web (Cannot find Chrome executable at
    .\Google\Chrome\Application\chrome.exe)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.9.6)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.9.34728.123
    • Windows 10 SDK version 10.0.22621.0

[✓] Android Studio (version 2023.3)
    • Android Studio at D:\Android-studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)

[✓] IntelliJ IDEA Community Edition (version 2024.1)
    • IntelliJ at D:\IntelliJ IDEA Community Edition 2024.1.1
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (3 available)
    • 23013RK75C (mobile) • 2df08b32 • android-arm64  • Android 14 (API 34)
    • Windows (desktop)   • windows  • windows-x64    • Microsoft Windows [版本
      10.0.22631.3593]
    • Edge (web)          • edge     • web-javascript • Microsoft Edge 125.0.2535.51

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

Version of clang++
clang version 18.1.5 Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: D:\scoop\apps\llvm\current\bin
Additional context
No response

So looks like the problem is
SEVERE: Cargokit BuildTool failed with error:
SEVERE: --------------------------------------------------------------------------------
SEVERE: Exception: Failed to find ar for aarch64-linux-android in C:\Users\jinch\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin

what about fixing it (e.g. maybe rustup add that toolchain).
In addition, flutter run --verbose may help since it outputs more

I tried the rustup target add aarch64-linux-android method.
Could you please give me more details?
PS C:\Users\jinch> rustup target add aarch64-linux-android
info: component 'rust-std' for target 'aarch64-linux-android' is up to date
PS C:\Users\jinch> rustup target list
aarch64-apple-darwin
aarch64-apple-ios
aarch64-apple-ios-sim
aarch64-linux-android (installed)
aarch64-pc-windows-msvc
aarch64-unknown-fuchsia
aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl
aarch64-unknown-linux-ohos
aarch64-unknown-none
aarch64-unknown-none-softfloat
aarch64-unknown-uefi
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
armebv7r-none-eabi
armebv7r-none-eabihf
armv5te-unknown-linux-gnueabi
armv5te-unknown-linux-musleabi
armv7-linux-androideabi (installed)
armv7-unknown-linux-gnueabi
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabi
armv7-unknown-linux-musleabihf
armv7-unknown-linux-ohos
armv7a-none-eabi
armv7r-none-eabi
armv7r-none-eabihf
i586-pc-windows-msvc
i586-unknown-linux-gnu
i586-unknown-linux-musl
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-msvc
i686-unknown-freebsd
i686-unknown-linux-gnu
i686-unknown-linux-musl
i686-unknown-uefi
loongarch64-unknown-linux-gnu
loongarch64-unknown-none
loongarch64-unknown-none-softfloat
nvptx64-nvidia-cuda
powerpc-unknown-linux-gnu
powerpc64-unknown-linux-gnu
powerpc64le-unknown-linux-gnu
riscv32i-unknown-none-elf
riscv32imac-unknown-none-elf
riscv32imc-unknown-none-elf
riscv64gc-unknown-linux-gnu
riscv64gc-unknown-none-elf
riscv64imac-unknown-none-elf
s390x-unknown-linux-gnu
sparc64-unknown-linux-gnu
sparcv9-sun-solaris
thumbv6m-none-eabi
thumbv7em-none-eabi
thumbv7em-none-eabihf
thumbv7m-none-eabi
thumbv7neon-linux-androideabi
thumbv7neon-unknown-linux-gnueabihf
thumbv8m.base-none-eabi
thumbv8m.main-none-eabi
thumbv8m.main-none-eabihf
wasm32-unknown-emscripten
wasm32-unknown-unknown
wasm32-wasi
x86_64-apple-darwin
x86_64-apple-ios
x86_64-fortanix-unknown-sgx
x86_64-linux-android
x86_64-pc-solaris
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc (installed)
x86_64-unknown-freebsd
x86_64-unknown-fuchsia
x86_64-unknown-illumos
x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnux32
x86_64-unknown-linux-musl
x86_64-unknown-linux-ohos
x86_64-unknown-netbsd
x86_64-unknown-none
x86_64-unknown-redox
x86_64-unknown-uefi

I'm so sorry, this is my first time using github issues!

Maybe try to show logs of flutter run --verbose

Thanks anyway, I solved it by reinstalling android ndk

Thanks anyway, I solved it by reinstalling android ndk

Happy to see it is solved! Then I will close the issue. Feel free to reopen if having any questions


add coments for examples/word2vec

add main function
add comment

I will merge this branch into #3040.
I will close this PR.


Sync minizip with closest upstream version (zlib 1.2.4 contrib) and document Godot-specific changes

Next step is to update to the contrib/minizip from zlib 1.2.11, but I want to make sure the synced 1.2.4 version works fine on all platforms before that.

i`m having a problem to compile in my Gentoo.
Initial build] Compiling ==> main/main.cpp In file included from ./thirdparty/minizip/unzip.h:55:0, from ./core/io/file_access_zip.h:38, from main/main.cpp:68: ./thirdparty/minizip/ioapi.h:127:51: error: expected initializer before 'OF' typedef voidpf (ZCALLBACK open_file_func) OF((voidpf opaque, const char filename, int mode)); .....
Complet log: https://ghostbin.com/paste/2kh96
I also tried "minizip=no" but still don't work.
Thanks

I`m getting errors to compile in my Gentoo,  this fallowing errors:
[Initial build] Compiling ==> main/main.cpp In file included from ./thirdparty/minizip/unzip.h:55:0, from ./core/io/file_access_zip.h:38, from main/main.cpp:68: ./thirdparty/minizip/ioapi.h:127:51: error: expected initializer before 'OF' typedef voidpf (ZCALLBACK open_file_func) OF((voidpf opaque, const char filename, int mode)); .....
Complete log: https://ghostbin.com/paste/2kh96
I also tried "minizip=no" but still don't work.
Compilers and version:
GCC - gcc (Gentoo 4.9.4 p1.0, pie-0.6.4) 4.9.4
Clan - clang version 3.9.1
Both clang and gcc give-me error.
I am running:
scons platform=x11

and
scons platform=x11 bits=64 tools=no target=release_debug -j 9 use_llvm=yes

Please open a new issue for this, to debug and fix it it's best to have a proper issue and not a merged PR.

Opened it for you: #10539


[Component] az component update throws error but succeeds

On Mac, running az component update --additional-component iot results in a stack trace:
Exception:
Traceback (most recent call last):
  File "/opt/az/local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/opt/az/local/lib/python2.7/site-packages/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/opt/az/local/lib/python2.7/site-packages/pip/req/req_set.py", line 742, in install
    **kwargs
  File "/opt/az/local/lib/python2.7/site-packages/pip/req/req_install.py", line 831, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/opt/az/local/lib/python2.7/site-packages/pip/req/req_install.py", line 1032, in move_wheel_files
    isolated=self.isolated,
  File "/opt/az/local/lib/python2.7/site-packages/pip/wheel.py", line 346, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/opt/az/local/lib/python2.7/site-packages/pip/wheel.py", line 324, in clobber
    shutil.copyfile(srcfile, destfile)
  File "/usr/lib/python2.7/shutil.py", line 83, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: '/opt/az/lib/python2.7/site-packages/azure/__init__.py'

Running instead sudo az component update --additional-component iot I get the following:
Command "/opt/az/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-SRJtuq/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" --no-user-cfg install --record /tmp/pip-9cQQXu-record/install-record.txt --single-version-externally-managed --compile --install-headers /opt/az/include/site/python2.7/cryptography" failed with error code 1 in /tmp/pip-build-SRJtuq/cryptography/

However, after running with sudo, IoT is installed.

Looks like it was an apt-get install and not on Mac.
The Permission Denied error is because you don't have permissions to run that command as the packages are installed in a global location, just like you had to do sudo apt-get install azure-cli in the first place.
I have created https://github.com/Azure/azure-cli/issues/1050 so that we don't show the full stacktrace.
@tjprescott: What OS/version did you try to run sudo az component update --additional-component iot on? I don't see the issue on Ubuntu 14:04

This was using the apt-get install with the UbuntuLTS image alias (which I believe is 14.04).


"download as zip" is shown as an option when there are no files to download

Steps
1. Visit a project or component with no files
2. Visit the files page and click on a storage add-on (like OSF Storage)
Current Behavior
1. The "Download as zip" button appears in the top right as an option
![screen shot 2015-06-09 at 10 28 17 am](https://cloud.githubusercontent.com/assets/4965832/8060317/9637120c-0e92-11e5-8cf9-d97a94f279a6.png)
Expected Behavior
1. As there are no files to download, the download button should not appear.

"Download as zip" appears even if there's only one file in the add-on. When I click it, the file downloaded is NOT a zip, but just the original file. Could we also get rid of the "Download as zip" option if there's only one file in the add-on?

I think we still want to allow downloading as zip even if there's only one file, but the button should actually download the file as a zip. That seems to be a separate bug. @jinluyuan Could you please open  a separate issue?

Right, meant to say that as the other option. I'll open this as a separate issue. @sloria


后端接口不响应 造成前端界面卡死 请问这种要怎么解决？

Describe the bug
后端接口不响应 造成前端界面卡死 请问这种要怎么解决？
Reproduction
No response
Expected behavior
No response
Platform and versions
我前端调的也是异步的 但是好像并没有生效
    async ClickSend(){       const res = await invoke('repeater_send', {       })       this.res_body = res     }
Stack trace
No response
Additional context
No response

Is your repeater_send tauri command async? If not, try converting it to an async fn or a fn marked with #[tauri::command(async)] so that they don't block the main thread.
Keep in mind that large payloads (in this case res_body) will block the UI too.


Enforce parameter naming

Parameters are not allowed to start with ssm or aws. This PR adds error messages which
correspond exactly to the error messages returned by boto3.

Coverage decreased (-0.3%) to 94.058% when pulling e9654e1766b7a3406197cf9bd6b98a746fc6c753 on JordanReiter:enhancement/ssm-forbidden-prefixes into 6adee0cbaf7a1971fff8809cc07dc4b23a08cc2e on spulec:master.

Hi @JordanReiter, looks like these changes cause the Python2 build to fail: https://travis-ci.org/github/spulec/moto/builds/712328265

Hi @JordanReiter, looks like these changes cause the Python2 build to fail: https://travis-ci.org/github/spulec/moto/builds/712328265

Yes, there were two lines making use of unsupported f-strings. Fixed in ffdce63.

This is now part of moto >= 1.3.15.dev1006

I know this is closed, but I'm curious why the code was structured to prevent adding a parameter like this for testing the original base image:
@mock_ssm
def test_find_aws_ami():
    ssm_client = boto3.client('ssm', region_name='us-east-1')
    amzn2_ami_id = 'ami-411ba5e2f00000000'

    # Create the dummy latest Amazon Linux 2 reference
    ssm_client.put_parameter(
            Name='/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2',
            Value=amzn2_ami_id,
            Type='String'
    )

    session = create_image.get_session()
    base_ami_id = create_image.find_aws_ami(session)

    assert base_ami_id == amzn2_ami_id, "Base AMI id is not correct"

    return base_ami_id

When probing for the parameter name, this is what is presented:
$ aws ssm get-parameters --names /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2 --region us-east-1
{
    "Parameters": [
        {
            "Name": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
            "Type": "String",
            "Value": "ami-0947d2ba12ee1ff75",
            "Version": 33,
            "LastModifiedDate":<PHONE_NUMBER>.765,
            "ARN": "arn:aws:ssm:us-east-1::parameter/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
            "DataType": "text"
        }
    ],
    "InvalidParameters": []
}

This is in accordance with the guide found here: https://aws.amazon.com/blogs/compute/query-for-the-latest-amazon-linux-ami-ids-using-aws-systems-manager-parameter-store/.
Is there another way to mock up a test for this?

Hi @snimark, preventing users from accidentally setting an /aws/..-parameter follows the boto3 behaviour, so I think this was the correct approach.
Adding default parameters like the latest AMI sounds like a good enhancement to moto, but until that's implemented, you might have to monkey-patch the get-parameters-call.

OK, thanks for the answer.


Double posting

https://www.reddit.com/r/hearthstone/comments/3wzeoi/winter_veil_cardback_will_replace_the_free_pack/
As seen in this thread the bot doubleposted the same message.

Issue can also be seen in this thread: https://www.reddit.com/r/nfl/comments/49oxut/nfl_is_holding_a_twoday_symposium_next_week_to/


fixed strict error I was seeing:

"Strict standards: Declaration of Terminus\Models\Collections\Bindings::fetch() should be compatible with Terminus\Models\Collections\TerminusCollection::fetch($paged = false)"

Nice catch! Thanks a bunch!


Add compact option to iterperiods()

This would merge adjacent periods that have the same value and return them as only one period. Ideally this would be done efficiently, although I'm unclear what that means (store a compact version of the timeseries along with the non-compact one?)

What is the use case for this?
I'd like to avoid adding complexity to the interface except if it's a common use case. Here's an example of how you could accomplish this efficiently:
import traces

class VladSeries(traces.TimeSeries):

    def iterperiods(self):

        duration = 0
        t, previous_value = self.get_by_index(0)
        for t_i, duration_i, value_i in super(VladSeries, self).iterperiods():
            if value_i == previous_value:
                duration += duration_i
            else:
                yield t, duration, previous_value
                duration = duration_i
                t, previous_value = t_i, value_i

        if value_i == previous_value:
            yield t, duration, previous_value

If I understand when you might want this from our lunchtime conversation, it's when a TimeSeries is created from summing up several TimeSeries: the result has many "unnecessary" repeated values (that is, in your case you don't care about when the measurements were taken).
One way of addressing what you are trying to use this for would be to add a TimeSeries.compact method that would get rid of any consecutive measurements with the same value. Then, you could compact the summed time series, and the repeated values would be gone. Then, calling iterperiods won't have any unnecessary repeated values.
I could imagine this being useful for optimization: if you need to transfer the values of a TimeSeries over a network or something where having the extra information just makes it take longer, or if you are doing a bunch of extra manipulation of the TimeSeries and want to make it run faster.


Cannot bind same key in both newsboat and podboat

Version
newsboat 2.19.0
System: Linux 5.6.14-arch1-1 (x86_64)
Compiler: g++ 9.3.0
ncurses: ncurses 6.2.20200212 (compiled with 6.2)
libcurl: libcurl/7.70.0 OpenSSL/1.1.1g zlib/1.2.11 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.9.0 nghttp2/1.40.0 (compiled with 7.69.1)
SQLite: 3.31.1 (compiled with 3.31.1)
libxml2: compiled with 2.9.10

Config
bind-key j down
bind-key k up
bind-key j next articlelist
bind-key k prev articlelist
bind-key J next-feed articlelist
bind-key K prev-feed articlelist
bind-key G end
bind-key g home
bind-key d pagedown
bind-key u pageup
bind-key l open
bind-key h quit
bind-key a toggle-article-read # important/relevant
bind-key n next-unread
bind-key N prev-unread
bind-key D pb-download
bind-key U show-urls

bind-key a pb-toggle-download-all # important/relevant
bind-key x pb-delete
bind-key dd pb-delete

Issue
Binding the same key (in my case a) for a newsboat function will remove that binding from podboat functions. I have a bound to toggle-article-read in newsboat and to pb-toggle-download-all in podboat (see the lines marked important in the config). Since the podboat binding comes last, the a key does nothing at all in newsboat.

bind-key has an optional 3rd argument: <dialog>.
That argument specifies in which dialog the key should be registered (and overwrite other keys).
It default to "all", which makes it overwrite the "a" keybind in all locations.
Adding podboat to the bind-key line should solve this specific issue:
bind-key a pb-toggle-download-all podboat

Marking as a bug as I think it makes sense for bind-key to only overwrite bindings in the dialogs in which the operation is handled.

@dennisschagt I didn't know that, sorry. I guess I should go RTFM some more. thank you!

Thanks for the report, @kdkasad, and thanks for digging in, @dennisschagt!

Marking as a bug as I think it makes sense for bind-key to only overwrite bindings in the dialogs in which the operation is handled.

I agree, so I'm re-opening this.


Occluded terrain continues to render strips of itself

Terrain3D version
v0.9.3a
System information
Godot v4.4.dev3.mono - macOS 15.1.0 - Multi-window, 1 monitor - Metal (Forward+) - integrated Apple M1 Pro (Apple7) - Apple M1 Pro (10 threads)
Is the issue reproducable in the demo?
Yes
Issue description
Strips of the terrain are still rendered when they should be occluded.

Open demo
Enable occlusion culling (Project > Project Settings... > Occlusion Culling > Toggle Use Occlusion Culling
Add OccluderInstance3D to the root node of Demo.tscn
Select the new node and in the 3D view press Bake Occluders
Run the scene and venture to the tunnel
Use F10 to switch to wireframe mode and observe landscape through the tunnel walls

Logs
No response

The strips you're seeing here are the L-Shape trims that rotate to fill gaps between LOD levels as they snap in place at different intervals. The L shape meshs essentially have an AABB that covers the entire size of that LOD.
THere are some improvements being worked on that will resolve this issue, as the L-Shape trim will be split into smaller segments.


Vulnerability roundup 69: binutils-2.31.1: 3 advisories

search, files

[ ] CVE-2018-17358 (nixos-unstable, nixos-19.03)
[ ] CVE-2018-17359 (nixos-unstable, nixos-19.03)
[ ] CVE-2018-17360 (nixos-unstable, nixos-19.03)

Scanned versions: nixos-unstable: 98e3b90b6c8; nixos-19.03: 4649b6ef4b5. May contain false positives.

Closing as issue #68556 is more recent. Also 19.03 is unsupported.


Can't updating on sparse matrix elements

Hi, I am using BIDMach for a week, it is incredibly fast , I really like that
but i face a problem while i want to create and edit a sparse matrix .
I cant update sparse matrix  elements in BIDMach
I tried simple assignment of   Accessing_Sparse_Matrix_Elements   in BIDMach Wiki
this is my code

val ii = icol(1,0,2,1,2,3);
val jj = icol(0,1,1,2,2,2);
val vv = col(0.78, 0.88, 0.13, 0.39, 0.08, 0.64);
val a = sparse(ii,jj,vv)
full(a)
a(0,1)
a(0,1)=0.2

and i get this error :

scala>  a(0,1)=0.2
java.lang.RuntimeException: operator update not implemented for SMat
at BIDMat.Mat.notImplemented0(Mat.scala:21)
at BIDMat.Mat.update(Mat.scala:187)
... 33 elided

i am using BIDMach Full bundles which include the CUDA 7.0 runtime.( BIDMach 1.0.3 for 64-bit Linux) on ubuntu 14.04
my scala version is
scala> util.Properties.versionString res2: String = version 2.11.2
by the way I realized elements are Float when running this command

scala>a(0,1)
res3: Float = 0.88

but in the tutorial they are Double like this

scala> a(0,1)
res1: Double = 0.88

Its a conscious choice. SMat's and SDMat's are designed to be "immutable" and to use an compute-efficient internal representation (CSC). Its not impossible to add a mutable sparse matrix type, but we'd have to convert back to CSC format for efficiency, and we'd have to figure out when to do it. We'd also have to support this across sparse matrix types (there are four now). In our own scripts, we typically build matrices first using row, col, val arrays like you did, and then call sparse.
To be able to dynamically edit SMat's we'd need to add constant-time edit operations - presumably implement them internally as a hash table of triples, and then convert to CSC when its time to do a compute kernel. Do you want to give it a try :).
I'm not sure what was in the tutorial but we now have both single (SMat) and double (SDMat) sparse matrices, so it depends how they were created.

thanks,
when i change the a from SMat to SDMat like this:
a.toSDMat
it worked.


Trying to deploy via JCloud

I installed pip install open_gpt_torch today.
The opengpt serve stabilityai/stablelm-tuned-alpha-3b --precision fp16 --device_map balanced command fails because open_gpt/resources/flow.yml.jinja2 cannot be found.
I think it might be missing from the pip install from because of a missing MANIFEST.in file?

When I add the file manually (copy it from this repo), the command runs succesfully, but it returns this error:
(.venv) marnix@hp:~/ART/CAMERA/code$ opengpt deploy stabilityai/stablelm-tuned-alpha-3b --precision fp16 --device_map balanced --cloud jina --replicas 1
[08/06/23 21:41:16] INFO     Successfully validated flow config.     flow.py:158
                             Proceeding to flow deployment...
⠴ Deploying /tmp/tmpl65rkej9 • Submitting... ━━━━━━━━━━╺━━━━━━━━━ 1/2 • 0:00:00[jcloud                          ]  Successfully validated flow config. Proceeding to flow deployment...
[08/06/23 21:41:17] INFO     Successfully submitted flow with ID     flow.py:177
                             striking-elk-0cbc352599
⠧ Deploying /tmp/tmpl65rkej9 • Submitting... ━━━━━━━━━━╺━━━━━━━━━ 1/2 • 0:00:01[jcloud                          ]  Successfully submitted flow with ID [bold][blue]striking-elk-0cbc352599[/blue][/bold]
                    INFO     Check the Flow deployment logs:         flow.py:720
                             https://cloud.jina.ai/ !
⠧ Deploying /tmp/tmpl65rkej9 • Submitting... ━━━━━━━━━━╺━━━━━━━━━ 1/2 • 0:00:01[jcloud                          ]  Check the Flow deployment logs: [link=https://cloud.jina.ai/user/flows?action=detail&id=striking-elk-0cbc352599&tab=logs]https://cloud.jina.ai/[/link] !
**Unexpected phase: Failed reached at Starting for Flow ID striking-elk-0cbc352599**

Any idea how to solve this? I can see the Failed Flow in https://cloud.jina.ai/user/flows, but the Logs tab is empty.
I tried all the variations I could think of, including different resource tiers (G2, G3) and models and quantization.
open_gpt.__version__ == '0.0.13' (+ manually copied open_gpt/resources/flow.yml.jinja2 file from this repo)
Python 3.9.5
Ubuntu 20.04.6 LTS

I can confirm the same error (Unexpected phase: Failed reached at Starting for Flow ID) happens after doing a fresh install using
git clone https://github.com/jina-ai/opengpt.git
pip install -e .

Thanks for feedback, how long did you get this error after you executor the command opengpt serve?

This might be some issues in JCloud since it takes too much time to convert the JCloud YAML file to k8s YAML. Unfortunately, there isn't too much we can do at this time, but I will keep you updated once we have some progress here. Sorry for the inconvenient. Will it be possible to deploy the model on your local machine?

Bump


Visual Studio Code not disabling format on save.

I'm trying to work on a project and Visual Studio Code keeps auto-formatting the file
This is very annoying and it's getting to the point where it messes up my files, for example
My React File:
function App() {
    return (
      <div className = "App" >
        <header className = "App-header" >
        </header>
       </div>
    );
}

What VSCode formats it to:
function App() {
    return ( <
        div className = "App" >
        <
        header className = "App-header" >
        <
        /header>  </div >
    );
}

This creates errors and doesn't allow me to save it properly.
I've gone to the settings and I've disabled format on save, yet it still continues to do it.
settings.json:
{
    "workbench.editorAssociations": [
        {
            "viewType": "jupyter.notebook.ipynb",
            "filenamePattern": "*.ipynb"
        }
    ],
    "liveServer.settings.donotShowInfoMsg": true,
    "files.trimTrailingWhitespace": false,
    "explorer.compactFolders": false,
    "editor.fontLigatures": true,
    "workbench.iconTheme": "vscode-icons",
    "workbench.colorTheme": "Atom One Dark",
    "editor.fontFamily": "'Fira Code'",
    "editor.suggestSelection": "first",
    "editor.formatOnSave": false,
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
}

Does this reproduce  with all extensions disabled?
/needsMoreInfo

@mjbvz it does.

Did you test in insiders?
Also, what's the language mode of the file? This is shown in the lower right corner of the status bar

@AwsomeWorkDevoloper are the settings you showed in your user-level settings.json or the one in the .vscode subfolder of the folder you opened in VS Code?

@AwsomeWorkDevoloper are the settings you showed in your user-level settings.json or the one in the .vscode subfolder of the folder you opened in VS Code?

No it isn't. I opened that settings.jsom by clicking CTRL-SHIFT-P and opened Settings(JSON)


update golangci-lint

Update of golangci-lint and go version used in linters actions.

This PR is only for upgrading the versions on Go and golangci-lint action. This is required to make sure that golangci-lint is always the latest version and is working with the latest version of Go. This requests is being made to all CSM drivers and modules to make sure linter action keeps working. Fixing linter warnings is not a part of scope of this upgrade PR.
Also, @donatwork FYI since I opened this PR 5 other PRs got merged with linters action failing.


Clock records are not compatible with Emacs org-mode.

Describe the bug
Clock records are not compatible with Emacs org-mode.
This may or may not be intentional, but limits interoperability between the two.
In orgextended, clock entries are stored in the PROPERTIES drawer, and the formatting is also different, i.e.
* TODO test item
:PROPERTIES:
  :CLOCK: [2021-05-28 fr 11:15]--[2021-05-28 fr 11:16] => 00:01
:END:

In emacs (27), a CLOCK entry is placed under the LOGBOOK drawer:
* DONE test item
  :LOGBOOK:
  CLOCK: [2021-05-27 to 14:58]--[2021-05-27 to 15:25] =>  0:27
  :END:

Furthermore the actual CLOCK entry is prefixed by a colon, which is not the case in Emacs.
To Reproduce

Create a new TODO item and clock in.

Expected behavior
to ease interoperability, orgextended should be compatible with org-mode, which is especially important in a while orgextended is not fully self running.
Platform:

PC ST4

Yup, fair enough.
Although... orgmode in emacs is really non standard itself on many of these types of things anyways. What is there is valid at the moment since the clock entries are just clock entries stored in valid property keys. You could do that in org (and I have, since I find it convenient to use the property API for accessing them.)
We aren't compatible with emacs in many many ways at the moment, and likely will never be able to be for a large number of reasons, least of which is that we aren't running on a lisp REPL.
But I certainly hear your point in this item. I will make it configurable so you can choose. (although org lets you dump the clock entries as loose entries as well and I likely won't take the time to support that because I find that cluttered.)
Your preference for using a logbook drawer is fine, and I think I can now support it without to much effort anyways since I have a more generic drawer API than when I wrote the clocking stuff at this point.

1.2.33 should have this.


Support two column layout for cards block

Currently, we only have a three column variation of the cards block.
We should also support two columns, like on this page: https://www.mammotome.com/news-media/

There is also an issue with the images not being contained correctly. Can also be addressed as part of this issue


Odd boss platform spawning

Sometimes the boss platforms spawn in odd places, such as the one above where it intersected with a stronghold tunnel. Is there a way to add checks so the platforms spawn in more open areas?

Boss world gen is being redone next update, so this won't happen anymore.  Red sandstone platforms won't even be a thing anymore, actually.


Stop playing any video on disappearing of MXKAttachmentsViewController

Solution for this issue
Signed-off-by: Denis Morozov<EMAIL_ADDRESS>

thx @morozkin.
I'm sure the Riot users will appreciate this fix.


feat(ARQ-2116): Adds DbUnit configuration properties

Adds DbUnit configuration properties as defined at http://dbunit.sourceforge.net/properties.html

Please also make sure that it works for in-container mode
https://github.com/arquillian/arquillian-extension-persistence/blob/1dbcc26746bee68502422bf822a2ebde34e1bec0/arquillian-ape-sql/container/int-tests/src/test/java/org/arquillian/integration/ape/dsl/ApeDslIncontainerTest.java

@bartoszmajsak: Commit done fixing that use case.

@bartoszmajsak: Commit done fixing that use case.

This is not really needed as I'm getting notification about the commit anyway :)


Request: Block completion for class, method, struct

I've been reading breadcrumbs left in the code, so I know that talon scripts can't take parameters yet. There's a note left to put the function paramter block  () inside a language-specific function at some point.
This ticket is just a reminder for one of us to consider adding language specific block completion to whatever method is created. example:
insert(" {}")
# the following is just an example, not sure if it's ideal
key(left enter up end left left left)

We could also implement these in python for now, if it's getting in the way.

I'm not blocked or anything like that. If it's something that you want to put a band aid on, i'm ok with that. I don't want to go to get difficult to maintain, whatever you think is best.


不能正确下载子模组  Unable to download submodules correctly (CON-852)

Whether I directly git the entire esp matter project or update the connected homeip after the git is completed, why is it always stuck in the same place and executed now/ Gn_ Build.sh is still stuck in third_ Party/silabs/gecko_ SDK, I have tried more than 10 times, but after deleting it, the GIT is stuck here again. How do I solve this situation?

Follow these instructions:
https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html#development-setup
When you download the entire project you are downloading the setup for many different chip vendors. Sometimes the setups for the other vendors are broken. The instructions above only download the Espressif pieces.


add GenerateFullPaths to tasks.json by default

Each time I create a new solution, and vscode automatically adds a tasks.json template I find I have to add GenerateFullPaths=true manually or I get a lot of issues such as not being able to jump to the line of code where there's an error as vscode cannot resolve the location of the source file.
i.e.
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/XXX/XXX.csproj",
                "/property:GenerateFullPaths=true"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}

How do you create the solution file? Do you run Task > Configure Task. I am actually pretty sure that this is caused by the C# extension but want to be sure.

No I don't run Task > Configure Task, I just hit F5 and the first time it generates tasks.json

Then this is generated by the C# extension. Can you please file the issue there.

Will do, thanks!


using an application key and not the master application key

hi cory,
Happy new year man.
i was wondring i am trying to list the buckets with an application key and not the master application key but i  am getting an error.
i am adding the response i am getting
waiting for you response
thanks and happy new year
B2Net error when no master application key.txt

I don't have enough information here to help you. Please provide more details. What call did this happen on? Are you sure your applicationKey and applicationKeyId are correct? Are you able to authenticate? Which authenticate method are you using?

Hi cory,
Yes i was able to connect. After connectin i am requesting the bucket list
and the i am getting the error.
בתאריך יום ה׳, 2 בינו׳ 2020, 02:11, מאת Cory<EMAIL_ADDRESS>
I don't have enough information here to help you. Please provide more
details. What call did this happen on? Are you sure your applicationKey and
applicationKeyId are correct? Are you able to authenticate? Which
authenticate method are you using?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/coryrwest/B2.NET/issues/37?email_source=notifications&email_token=AIJTORM24BR37I3KHUMQCZDQ3UWMVA5CNFSM4KBWIOS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH5POSQ#issuecomment-570095434,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIJTORLVUAOLCNQ2RXBVX6LQ3UWMVANCNFSM4KBWIOSQ
.

What is the error you are getting from my library?

Inactive


Graceful shutdown/cleanup on CLN stop

I was made aware that clnurl didn't shutdown correctly when CLN did and recently fixed it (https://github.com/elsirion/clnurl/issues/14). @laanwj mentioned cln-zapper likely needs the same fix. Just for awareness :)

Thank you I'll take a look

It does seem like a different problem; the plugin receives and handles the shutdown signal, and even logs a message, but subsequently it doesn't really exit. My guess is it doesn't stop processing the invoices stream in the main thread.


Created 104-Maximum-Depth-of-Binary-Tree.cs

File(s) Modified: [104-Maximum-Depth-of-Binary-Tree.cs]
Language(s) Used: [C#]
Submission URL: [https://leetcode.com/submissions/detail/755945421/]

Thanks, @daredev127!


can not using flit install --symlink on Windows10

I tried to use flit on Windows 10. However, when I use flit install --symlink to install the package, I run into errors blow:
(venv) PS E:\projects\lingxi> flit install --symlink
...
Traceback (most recent call last):
  File "C:\Program Files\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Program Files\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "E:\projects\lingxi\venv\Scripts\flit.exe\__main__.py", line 9, in <module>
  File "e:\projects\lingxi\venv\lib\site-packages\flit\__init__.py", line 171, in main
    pth=args.pth_file).install()
  File "e:\projects\lingxi\venv\lib\site-packages\flit\install.py", line 408, in install
    self.install_directly()
  File "e:\projects\lingxi\venv\lib\site-packages\flit\install.py", line 306, in install_directly
    os.symlink(osp.abspath(self.module.path), dst)
OSError: symbolic link privilege not held

I also found some notes form the python offical docs:

Note On newer versions of Windows 10, unprivileged accounts can create symlinks if Developer Mode is enabled. When Developer Mode is not available/enabled, the SeCreateSymbolicLinkPrivilege privilege is required, or the process must be run as an administrator.
OSError is raised when the function is called by an unprivileged user.

It seems that os.symlink can not be used when using unprivileged accounts. However, I can use pip install -e . on Windows, so maybe this is a bug or something?

Hi, that's basically expected - there's an alternative flag --pth-file
which does the same as pip install -e. It's less elegant, but it works on
windows.
On Mon, 9 Mar 2020, 16:58 YangQuan<EMAIL_ADDRESS>wrote:

I tried to use flit on Windows 10. However, when I use flit install
--symlink to install the package, I run into errors blow:
(venv) PS E:\projects\lingxi> flit install --symlink
...
Traceback (most recent call last):
File "C:\Program Files\Python37\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "C:\Program Files\Python37\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "E:\projects\lingxi\venv\Scripts\flit.exe_main.py", line 9, in
File "e:\projects\lingxi\venv\lib\site-packages\flit_init.py", line 171, in main
pth=args.pth_file).install()
File "e:\projects\lingxi\venv\lib\site-packages\flit\install.py", line 408, in install
self.install_directly()
File "e:\projects\lingxi\venv\lib\site-packages\flit\install.py", line 306, in install_directly
os.symlink(osp.abspath(self.module.path), dst)
OSError: symbolic link privilege not held
I also found some notes
https://docs.python.org/3/library/os.html?highlight=os symlink#os.symlink
form the python offical docs:
Note On newer versions of Windows 10, unprivileged accounts can create
symlinks if Developer Mode is enabled. When Developer Mode is not
available/enabled, the SeCreateSymbolicLinkPrivilege privilege is required,
or the process must be run as an administrator.
OSError is raised when the function is called by an unprivileged user.
It seems that os.symlink can not be used when using unprivileged
accounts. However, I can use pip install -e . on Windows, so maybe this
is a bug or something?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/takluyver/flit/issues/325?email_source=notifications&email_token=AACQB5PLZDHQPQ54CTWCKYDRGUG2XA5CNFSM4LEL4WFKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4ITTZEFA,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACQB5PCXZXFNCXNRAA73CTRGUG2XANCNFSM4LEL4WFA
.

Thanks for you reply. I was in a hurry last night, so I did not see option --pth-file in the docs. I wonder if some advice could be add when the exception below occurs, like:

It seems you are using --symlink on Windows, maybe you can use --pth-file instead.

Yep, that seems reasonable. I'll leave this open as a feature request.

@youngquan Did you try running in as administrator in a command prompt, with the symlinks?  that should do it.


let user can create sub entries to selected subEntries

ex) user might want to create 'comp' part to  0010, 0020, 0030, 0040 shots.
The best way I can think of is doing it with selected entries.

Done by 7814640f11feb94ee7bde67e5173f9156ab13b58


Error executing vim.schedule lua callback: diagnostic-nvim/lua/diagnostic/util.lua:155: index out of range

I get this error every now and then. I think it occurs when there's a large number of diagnostics in the same buffer from a language server. I'm now able to consistently reproduce this error in a Julia file.

If I hit enter the error message continues popping up.

Have you updated diagnostic-nvim? I think #38 fixes it.

I just tried again with the latest commit, and I still get the same errors.

I can't reproduce on my side, so let see if the PR fixes it.

I found I had the same issue while using the python-language-server. Specifically, one of my linters (pyflakes) would label the starting positions of particular errors as -1, which caused an index-out-of-bounds error. I added these lines at line 91 of diagnostic-nvim/lua/diagnostic.lua
  for _, diagnostic in ipairs(result['diagnostics']) do
    if diagnostic['range']['start']['character'] < 0 then diagnostic['range']['start']['character'] = 0 end
  end

and it has fixed my issues. @haorenW1025, if I can tidy up the implementation a little would you consider this a good pull-request? If so I can put it together (I'll also check to make sure the end-character doesn't exceed the length of the line in case some other language-servers do that).

Apologies - I'm not completely up-to-date so it may not be at line 91 of diagnostic-nvim/lua/diagnostic.lua (I was previously on f8b312d)

Made a pull-request for this issue that has fixed this for me (incase #48 doesn't work)