Github flavored markdown syntax highlighting doesn't work

Github flavored markdown is not correctly highlighted. Failing elements are fenced code blocks (i.e. surrounded with three backticks) or underscores_between_words (where "between" is highlighted as recursive, when it should not be.
I have switched this on with
     :files [(:lt.objs.files/file-types [{:name "Github Markdown"
                                         :exts [:md :markdown]
                                         :mime "gfm" :tags [:editor.markdown]}])]

in user.behaviours as per a google group thread, and Codemirror can do this and it is in LT so I don't see why this doesn't work.

Seems to still be the case. Additionally, if the current editor syntax is set to Github Flavored Markdown, the file loses all highlighting entirely until switched back.

@ohAitch You're setting the current editor syntax thru the command bar, right? Would you build and run the atom-shell branch version and confirm if this is still an issue with that version?

Adding the relevant examples from #1922 :
In Github Flavoured Markdown, the following are valid:
    ```javascript
    var firstName = "Gregg";
    ```

    ``` clojure
    user=> (type #'user/my-number)
    clojure.lang.Var
    user=> ;
    ```

and
    <script>
      var firstName = "Gregg";
      // This is less "valid", but works in Markdown compilers like Jekyll
    </script>

Closing as I've verified latest 0.8.0 does have syntax highlighting for gfm


One Question Regarding the Plugin

So after some tiring work, I was able to get this plugin running.
So I have tested and set up some plugins and configured them for some jobs. Does this plugin only work for the changes after the plugin installation or will it look for the previous configured installations as well?

@argoyal I went through my revision history. I believe you may have to go into one of your jobs and just save it (maybe make a trivial change). That'll trigger that job to be committed, but also I think the plugin looks to see if there are any other jobs/configuration it needs to sync as well, because the very next commit I see after my job change in the history has all of my jobs/config committed.


Update buttercup to 0.12.4

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask's name and version.

Thank you for the contribution. It was merged directly as 5c42452ebab63dda97a4d4e845bd2251e89f389d to keep commit history cleaner. Your contribution is still credited to you.


change default to have workflow querying enabled

Currently workflow querying has to be enabled for each project - this has caused a number of hiccups when it has not been activated. Going forwards nearly all projects will need workflow querying enabled, to allow for AAAPI workflow redirection.
Can we updated our version of PFE to have workflow querying enabled by default?

I think we shouldn't even have the check here - if a workflow is in the url then always go to it

This doesn't seem to have worked - for instance keep refreshing this page and you will be bumped around between workflows A, B and C, despite the workflow ID being in the URL https://pfe-staging.1715labs.com/projects/1715labs/workflow-query-example-project/classify?workflow=19761

Apologies - I'm still using the old PFE URL not vercel!!

Not sure why I was seeing the jumping-around bug though, it seems to work now... Could the changes have been deployed to prod but not staging?


WIP: Introduce integration test for restart

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: alenkacz
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [alenkacz]

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

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
e0d0b1f1b0bc981d3e83907f4cfe5e011f20e6c6
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
2c0308f9255d0ca75e82e853f5f9e92f928ce9a8
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
7ad32075948c5094ec89da30d374e5b4fea2699c
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
fc1e8b7ee45e33f7c88449723ba46fa3845ed2a6
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
47a12da231c2477b653dd97ca327e93ec94cae94
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
9d859a931bf07528184a1bcfa98dfbcddf6bdefe
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
5106ac8cb75c7df99b44636b79f5b7548a4f964d
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

test
407e311ec522f3383bf045d3540c215090bf9029
link
/test test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@alenkacz: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

looks reasonable, what do we need to do to land this?

@gerred now you can :)


[WIP]: Feature/docker refactor

Hi, thank you for your contribution to Mantl! Before we can accept any code into
master, we need it to meet the following criteria. If there are any you can't
satisfy yourself, go ahead and open the pull request anyway and we'll help you
test. Feel free to delete this message once you're done. Thanks again!

[ ] Installs cleanly on a fresh build of most recent master branch
[ ] Upgrades cleanly from the most recent release
[ ] Updates documentation relevant to the changes

This refactors the docker implementation:

can either install docker inc rpms or the redhat package
allows multiple docker options
configurable logging backend (defaulting to journald)
redo storage to use mantl-storage-setup, this removes a lot of the ansible code

Looks good on first glance.
Need some minor tweaking regarding storage setup, but I'll done it, when prepare my storage-setup branch to merge

Closing this, as we'll have a newer PR that includes updated storage.


Error Parsing String in POST body.

I am trying to create a PACT consumer test that passes String as a body in the POST request with Content-Type = application/json
Version:    "au.com.dius:pact-jvm-consumer-java8_2.11:3.5.21"
I am declaring my pact as:
`
Map<String, String> requestHeaders = new HashMap<>();
requestHeaders.put(ACCEPT, APPLICATION_JSON);
requestHeaders.put(CONTENT_TYPE, APPLICATION_JSON);
.given("Description")
.uponReceiving("Description")
.headers(requestHeaders)
.method(POST)
.query(query)
.body("s1="val1" and s2="val2")
.path("/path")
.willRespondWith()
.body(ResponseString)
.status(OK_200)
.toPact();`
But I am getting the following error when I run consumer test:
`11:48:00.318 [Thread-2] ERROR a.c.d.pact.consumer.BaseMockServer - Failed to generate response
groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array, or object
The current character read is 's' with an int value of 115
Unable to determine the current character, it is not a string, number, array, or object
line number 1
index number 0
"s1="val1" and s2="val2"" `
It fails with
java.lang.AssertionError: Pact Test function failed with an exception, possibly due to ExpectedButNotReceived(expectedRequests=[	method: POST.
If I change the Content-Type to text/plain I get a partial mismatch with header "content-type" not matching.
Is this a bug another way to test this scenario? Or because the body is of type string, it's not a valid scenario and header at client side need to be changed?
Thanks!

If you set the content type to application/json, the body needs to be formatted as JSON. Looks like you are trying to do a FORM POST with body("s1="val1" and s2="val2")


Measure the performance of different codecs when transferring data between the source and target.

To transmit a data structure across a network, it must be encoded by the source reader and decoded by the target writer.
The most obvious choice for encoding Go structs is the standard 'encoding/json.'
However, it's worth exploring other options

'jsoniter' from https://github.com/json-iterator/go
'Gob' from https://pkg.go.dev/encoding/gob.
'MessagePack' from https://github.com/vmihailenco/msgpack/v5

After exploring these options, it turns out that jsoniter performs better than the standard encoding/json.
Gob doesn't exhibit any significant advantages over jsoniter.
However, it appears that the MessagePack encoder is the fastest among them.

Initial test parameters involve migrating 50 million records, totaling approximately 150 GB of data, from MySQL to Postgres.
"dataBundleSize": 400  . Three Target Writers.

Results:
JSONiter encoder:

Completed in 23 minutes and 16 seconds.
MsgPack encoder:

Finished in 21 minutes and 10 seconds.

As a result, the MsgPack codec demonstrates the best performance.
However, for now, it seems better to stick with a Json codec, as others don't offer significant advantages and may exhibit unexpected behavior.
Jsoniter appears to be abandoned, but it has proven its stability. Therefore, for now, we choose to go with it.

There are some incompatibilities with the standard library in github.com/json-iterator/go.
Another concern regarding github.com/json-iterator/go is that it is no longer maintained, and some bug-fixing PRs have not been merged.
An alternative library, github.com/goccy/go-json, has been tested as a replacement for Jsoniter.
Benefits of go-json

Json unmarshaling with github.com/goccy/go-json appears to have lower CPU consumption.
The speed is comparable to what Jsoniter demonstrates.

Using goccy/go-json,  I've noticed some peculiar behavior during the marshaling/unmarshaling of data.
I'm encountering unusual errors such as:
When encoding :
encoder: opcode  has not been implemented

It points somewhere to
https://github.com/goccy/go-json/blob/df897aec9dc4228e585e8127b4db026d506d2b3c/internal/encoder/vm/util.go#L46

When decoding :
invalid character 'Ü' looking for the beginning of a value
invalid character '«' looking for the beginning of a value
<error(*github.com/goccy/go-json/internal/errors.SyntaxError)>)
<*github.com/goccy/go-json/internal/errors.SyntaxError>(0xc000a9ae58)
msg: "invalid character '×' looking for beginning of value"
Offset: 28724

Upon reverting to standard encoding/json, I no longer experience similar errors. It's worth noting that there are no issues with github.com/json-iterator/go.
It seems preferable to revert to the standard JSON encoder until these issues are resolved.


Update appveyor.yml

Closes #
📑 Description

✅ Checks

[ ] My pull request adheres to the code style of this project
[ ] My code requires changes to the documentation
[ ] I have updated the documentation as required
[ ] All the tests have passed

☢ Does this introduce a breaking change?

[ ] Yes
[ ] No

ℹ Additional Information

Summary by CodeRabbit

Chores

Improved organization and readability of the build and deployment configuration.
Enhanced environment variable handling and artifact management processes.
Updated commands for test execution and coverage report generation.
Disabled the build process for a new management approach.
Added commands for generating and pushing artifacts, including compression steps.

:x: Build Sankhya-SDK-dotnet 3.0.971 failed (commit https://github.com/guibranco/Sankhya-SDK-dotnet/commit/7eaf4ff708 by @gstraccini[bot])

:x: Build Sankhya-SDK-dotnet 3.0.979 failed (commit https://github.com/guibranco/Sankhya-SDK-dotnet/commit/a07041d529 by @guibranco)

:x: Build Sankhya-SDK-dotnet 3.0.999 failed (commit https://github.com/guibranco/Sankhya-SDK-dotnet/commit/139b5f7045 by @guibranco)


Bulk convert CBR to CBZ (workaround)

I see you have CBR support already planned. I have a quite a lot of CBR files so this is a bit of a blocker at the moment. As a workaround, I wrote a bash script to convert my library so I could get a better feel for how Mango will work. By default it will not delete the original files so it should be reasonably safe to use. Perhaps it may be useful to others :)

cbr2cbz.sh

Not sure if this is the right place for it but figured I would post and you can decide if it's useful / should live somewhere else.

On a separate note about your future cbr support. I see you are planning to get the user to supply the path. One of the things I really like about Mango is that it comes as a single binary that 'just works'. I honestly don't know the detail but if there was a way to bundle the functionality directly into the app, without the need to specify an external dependency, I think it would really help more users to easily set Mango up. And probably less new Github issues of users asking why cbr is not working :) unar (not unrar) that I found and am using in the bash script appears to be a re-implementation that is already available in many package managers. Not sure if it helps?

The challenging part about RAR is that it's a proprietary format so (unlike zip) there's no RAR reader/writer in the Crystal standard library. I couldn't find any shards for it either.
A conversion script would indeed be nice to have! Let me test it a bit and then include it in the wiki.
I didn't know about unar and it looks promising 👍 . It supports other formats like 7zip, so with it Mango can have cb7 support as well. I don't think the unar binary is statically linked by default, so including it in the Mango binary might not work, but since it's open-source I can try to compile it statically. I will keep you updated!

I have tested the conversion script and it works great! It's now in the Wiki.
Unfortunately, I couldn't get unar to link statically, but I agree we should make the binary self-contained if possible. Instead of including a third party binary in the Mango binary, I think it makes more sense if we could wrap a C-based RAR extraction library (e.g., libarchive) as a Crystal shard and use it in Mango. I will try to work on it when I have the time.
I am closing this issue, but feel free to reopen it.

@jaredlt Just to keep you updated, I have added RAR/CBR support in the dev branch (thanks to the libarchive project).
Since you mentioned that you have a lot of CBR files, it would be great if you could help to test it out! If you want, you can use the mango binary compiled by the GitHub Action (see the "Artifacts" section).

@hkalexling happy to help!
I get the following error when I run Mango:
Unhandled exception in spawn: RAR solid archive support unavailable. (Archive::Error)
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???

I can access the web interface but it shows 0 titles in the library.
As a side note, is there a way to run multiple instances of Mango with separate configs and dbs? It's not a big deal, but just wondered.

Thanks for testing it 👍. It looks like libarchive does not support solid RAR archives, and that's why you got the error. Where did you get your CBR files? Is it common for them to be solid?

is there a way to run multiple instances of Mango with separate configs and dbs?

Yes, see #21 . However, if you are serving the instances under the same domain/IP, the two instances will overwrite each other's login token in the browser cookies.
Currently, the login token is always stored in the browser cookies under the key token (see https://github.com/hkalexling/Mango/blob/master/src/routes/main.cr#L27-L29). Perhaps we can include the port number in the key (say token-9000) so tokens from different ports will be stored separately.

Could you please set the log level to debug and test with this build? I've made it so that when it fails to read an archive, it logs the archive path and the detailed error message. You should be able to see how many of your CBR files are solid.

I checked some similar projects. komga doesn't support solid RAR either (source), and LANraragi is using libarchive as well (source). I guess we can leave it like this and make it clear in the README or Wiki that solid RAR files are not supported.

Where did you get your CBR files? Is it common for them to be solid?

Scattered across the internet :) It seems solid is not very common at all (only 3 archives were solid) and I agree that a clear message somewhere should suffice. The majority of errors were actually Parsing filters is unsupported. Admittedly most of the archives with errors are for comics, not manga, and all of them are quite old.

Archive error: Prefix found: 3
Archive error: RAR solid archive support unavailable.: 3
Archive error: Parsing filters is unsupported.: 67
Archive error: Couldn't find directory end signature in the last 65KB: 1

Attached full debug.log
I was going to say that the info level logging isn't super clear as it says File /path/file.cbr is corrupted or is not a valid archive. Ignoring it. (you don't know exactly what the problem is). But I see in #49 you are looking to be more specific with the error messages regarding permissions. Will you also do the same regarding solid support etc?
You also mention displaying corrupted archives in the web interface. I think this will be really useful. Will this apply for all errors or unsupported archives? Basically, anything where the logger says ignoring it?
RE: multiple instances - thanks, I'm happy enough with how it is. It hasn't become painful to switch around so no need to prioritise the cookie token fix on my account.

Thanks a lot for investigating this!

Archive error: Parsing filters is unsupported.

This is due to an old bug in libarchive (see https://github.com/libarchive/libarchive/issues/373), and LANraragi has the same issue (https://github.com/Difegue/LANraragi/issues/165). Unfortunately, there's nothing much we can do :(
Regarding multiple instances, I have been thinking about it, and I think there's no harm in doing it. We just need to change a few lines, and it's a good workaround for #13. Supporting #13 would involve a lot of work and I am not ready to do it :P Will probably include it in v0.5.0 as well.


PEP8 conformance issue

Merging PR #365 broke the PEP8 conformance test, see https://circleci.com/gh/ESMValGroup/ESMValTool/2674
EP8 check of directories: esmvaltool, tests

/python2_test/esmvaltool/diag_scripts/autoassess/autoassess_source/stratosphere/strat_metrics_1.py:352:80: E501 line too long (80 > 79 characters)

Your Python code does not conform to the official Python style
guide (PEP8), see https://www.python.org/dev/peps/pep-0008

@valeriupredoi Could you please fix this?

Aw, sorry guys, on my way to work, will fix this asap
Dr Valeriu Predoi.

—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/ESMValGroup/ESMValTool/issues/383#event-1660750696,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AbpCo7T4q2-q4BxxqKqAle0FiytMMkUtks5t5PbUgaJpZM4UYs2A
.

fixed here: https://github.com/ESMValGroup/ESMValTool/commit/ac81ed488741edc92df6525c92249ad1edaab266


Output file contains a temporary string

Hi - I'm trying parcel-plugin-concat to build my project with multiple entry files and everything seems to be working fine. The only issue is, the output file generates a random/temporary string in the suffix. As I include output.js in the index.html file, I want this exactly to be output.js. Is this something that can be fixed in the plugin?
parcel build src/js/* -o output.js --out-dir public/js

Thanks for the report. I noticed the issue; even with --no-content-hash parcel adds the content hash. Let's see if we can fix it.

@vijinpaulraj In fact the --no-content-hash parcel option does what you want. It still includes a hash in the output file, but it should be always the same as the hash is caculated based on the output path rather than the content. You are free to change output.<hash>.js to output.js afterwards. See: https://github.com/parcel-bundler/parcel/pull/1934#issuecomment-546686161

Thanks, @tadayosi for coming back on this.
The problem is, if I want to make a build for production, the renaming bit will be quite challenging - perhaps I need to write a script to rename the output file.

@vijinpaulraj With --no-content-hash the output file name should be always the same, so if you use npm scripts you can easily rename it as follows:
  "scripts": {
    ...
    "postbuild": "mv public/js/output.xxxxxxxx.js public/js/output.js"
  }

or you can use output.xxxxxxxx.js as-is at client as the hash code shouldn't change.


Large queues allocated

In ContinuationProcessor, you allocate two arrays of size 500,000. This uses about 30 MB of memory for each type of IAwaitInstruction used (WaitForFrames, WaitForSeconds, etc), regardless of how few Continuations you actually use.
You could instead start the queue size small (like 16) and dynamically resize the arrays. For example:
public void Add(T cont)
{
	if (futureCount == futureQueue.Length)
	{
		int newLength = futureQueue.Length * 3 / 2;
		Array.Resize(ref futureQueue, newLength);
		Array.Resize(ref currentQueue, newLength);
	}

	// rest of method...
}

I've implemented queue resizing in 5430f351c9a06377d61018a946dcbb24c55418b4. Queue size starts at 1024 now. I'm happy to amend this to something smaller if you think that's too much. I think that ends up around 64KB per used IAwaitInstruction type.

I think you have a couple bugs in your commit.
int newQueueSize = Math.Min(MaxQueueSize, futureQueue.Length);

Here you forgot the * 3 / 2, so you're just keeping it the same size.
The second bug is more subtle. In Process() you have:
if(!c.Evaluate())
{
	futureQueue[futureCount] = c;
	++futureCount;
}

It should be:
if(!c.Evaluate())
	Add(c);

Because Evaluate() may run the continuation, which may in turn add more items to futureQueue, and it can overflow. You could make Add() take a ref if you want to avoid copying the struct (and put ref parameters all the way up the call stack).
As for the initial size, I don't think you can go too wrong either way. You're balancing an insignificant amount of memory against an insignificant amount of time. On my machine, Array.Resize() takes about 1ms per 2MB of copying. So if, for example, someone were to do an await Await.Seconds(60) every tick at 60 fps, the queues would need to hold about 3600 items. If you start with a queue size of 2, and increase the size at a ratio of 1.5, you'll be copying a total of about 16000 items per queue (with a ratio of 1.5, you'll always end up copying about 3 times the final length of the queue, and the final length in this case will be 5395). At 64 bytes per item, that's about 1 ms between the two queues, over the course of a minute, compared to 0.32ms if you just set the queues to 5000 items up front. If you start the queues at 1000 items, it'll still take 82% as long as starting with 2 items, because all the big, slow copies happen after the queue gets large.

Thanks for the detailed analysis. Totally forgot the * 3 / 2, oops!
Regarding the second bug, my line of thought was a new IAwaitInstruction queued through the ContinuationProcessor is not really increasing the queue size; it's maintaining it (you need to "dequeue" a continuation before it can "enqueue" a new one. I'm trying to find a way to break it because in hindsight that assumption seems a little bit sketchy but thus far I haven't been able to. This includes using a very small initial count of 4 and creating an increasing number of coroutines (by invoking async void methods with await Await.NextUpdate()), and also a background context loop adding more frame awaiters every 500ms. The queue expands as expected but futureCount is never larger than the buffer, unless the exception is being swallowed somehow.
Also, regarding the ref idea, I thought in was semantically equivalent to ref so long as you don't call a method on the struct (which could mutate it). AFAIK at some point the struct must be copied because you can't return ref this from a struct method (which would be nice in GetAwaiter). The alternative is an extension method with a by ref parameter but that means every await must be on a variable (so something like await Await.NextUpdate() would have to become var a = Await.NextUpdate(); await a;).

Also, regarding the ref idea, I thought in was semantically equivalent to ref

So actually, I didn't even notice you added the "in" keyword. It's been a few years since I've used C#, so my brain is still basically on C# 5. I didn't even realize they added that language feature, so I think my mind just edited it out. I'm glad to see it. I've gotten used to using const FVector& everywhere from Unreal Engine.
For the bug, the following should throw an IndexOutOfRangeException if you set your initial queue size to 2 and have no other awaiters:
void Start()
{
	UhOh();
	WaitSec(20);
	// queue now has [ WaitForSeconds(0), WaitForSeconds(20) ]
}

async void UhOh()
{
	await Await.Seconds(0);
	WaitSec(10);
	WaitSec(10);
	// Add two more items to the queue in the continuation. The new queue is now full. It
	// will next try to add the WaitForSeconds(20) past the end of the array.
}

async void WaitSec(float seconds)
{
	await Await.Seconds(seconds);
}

I tried your code but am unable to produce an exception. Let's decompose the code:

UhOh() is invoked: enqueues 1 awaiter (A) in update (count = 1)
WaitSec(20) is invoked, enqueues 1 awaiter (B) in update (count = 2)
A is dequeued (~0 seconds passed, we're in frame 2 now, count = 1)
WaitSec(10) is invoked twice, awaiters C and D are enqueued straight after each other (count = 3)

The count doesn't exceed 3 (I checked with debug statements). If an awaiter is evaluated and hasn't finished, it doesn't increase the queue size - it just gets pushed into the alternate buffer for the next frame (I call this futureQueue). If it has finished, it doesn't get pushed to the next frame buffer  and the count decreases. An awaiter cannot push another awaiter onto the buffer unless it has finished, because only a continuation can do that, and when this happens it does check the queue size.
To clarify, when I say "dequeue", I mean the awaiter is just not pushed to the next frame buffer.
public void Process()
{
	int count = futureCount;
	futureCount = 0;

	// swap queues
	var tmp = currentQueue;
	currentQueue = futureQueue;
	futureQueue = tmp;

	for(int i = 0; i < count; ++i)
	{
		ref var c = ref currentQueue[i];

		// we're just keeping this one in the queue
		if(!c.Evaluate())
		{
			futureQueue[futureCount] = c;
			++futureCount;
		}
	}

	Array.Clear(currentQueue, 0, count);
}

If we look at this code, we see futureCount is set to 0 before the awaiters are processed, so if an awaiter finishes and is not placed into the futureQueue, by default it is essentially reducing the count (futureCount is not incremented). All calls to AwaitInstructionAwaiter<>.GetAwaiter will invoke the appropriate Add method which does check the queue size.
Why reset futureCount instead of decrementing it when the awaiter is finished? It's more than just a count, it's an index into the end of the next frame buffer. This index would be incremented via Add and I suppose Add could be invoked from concurrent threads, which could cause issues but that's another (somewhat important...) problem.

It errors reliably for me. I'm not sure what the difference is. Did you set the initial queue size to 2?
Your steps aren't quite right. Or rather, they gloss over some important details.
Frame 1: (as you said) we enqueue WaitForSeconds(0), then WaitForSeconds(20)
Frame 2, in Process():

Start of first loop iteration: futureCount = 0, i = 0, c is WaitForSeconds(0)
Calls c.Evaluate(). Evaluate() ends up calling ContinuationProcessor.Add() twice, adding two WaitForSeconds(10), and then returns true. futureCount = 2.
Start of next iteration: futureCount = 2, i = 1. c = WaitForSeconds(20).
c.Evaluate() returns false. We try to do futureQueue[2] = c, which throws the out of range exception.

Not sure what's going on then. This is the only local change from last commit on master:

The other change is adding your test case (copied and pasted).
When I run it I do not get any kind of exception. If I add Debug.Log(newQueueSize) to ContinuationProcessor.Add inside the if(futureCount == maxIndex) block it prints out "3" but that's it.

Hol' up.
In frame 1, we add WaitForSeconds(0) (futureCount was 0, now 1). Still in frame 1, we add WaitForSeconds(20) (futureCount == maxIndex is true, queues resized to 3, futureCount was 1, now 2).
In frame 2 (i = 0), WaitForSeconds(0).Evaluate() adds two more WaitForSeconds(10) (futureCount = 2). At i = 1,WaitForSeconds(20).Evaluate() returns false, it is placed into futureQueue[futureCount], which is still 2, and futureCount is increased to 3. Queue capacity is 3 so this is valid.
In frame 3, none of the awaiters are finished so all 3 are added to futureQueue, capacity remains at 3.
...
Eventually they all finish and terminate, futureQueue is 0, capacity is 3.

Oh, I'm sorry. In Add(), I had changed if (futureCount == maxIndex) to if (futureCount == futureQueue.Length). I forgot I did that. That explains the off-by-one difference.

It throws an exception for me too. I've added a slightly more complex resize check in Add to avoid this. Basically, it considers how many awaiters are left in the current queue. Worst case all of them will need to be re-added so it resizes to ensure that if that is the case, there will be enough capacity for them. Not sure about whether to resize to 1.5x the largest potential queue size or 1.5x the current. I've done the latter but now I'm leaning toward the former (probably better to resize less frequently if it can be helped).
I went to all this trouble instead of calling Add inside Process because by their nature, these awaiters are likely to be evaluated over many frames. You'll typically have more awaiters active than awaiters being added in any one frame. As such, I wanted to keep the hot path in Process as lean as possible. This meant doing a bit more work in Add, which I hope is a good trade-off. I haven't benchmarked it though, I've found it really difficult to get reliable figures in the past.
I was thinking, for the threading issue where a background thread could call Add and manipulate the futureCount, instead of locking I could add a check to determine if it is called from in Unity's SynchronizationContext and if not, just await the UnitySynchronizationContext. A simple sync context comparison should be faster than a lock that's rarely needed, and it means I don't need to lock in Process.

Makes sense. If Add() is inlined, and just has a single extra if (futureCount == maxIndex) check, which evaluates to false 99% of the time and therefore plays nice with the branch predictors, I wouldn't expect much difference. But without profiling, I'm not sure.
I'm not sure how other people are using coroutines and async/await, but for me, I won't typically have more than a few dozen running at once. If I did for some reason want 100,000 active awaiters, I'd use a system that didn't run every update(). For example, WaitForFrames could use a priority queue (a heap), and WaitForSeconds could just use the built-in C# Timer. But I don't see many people needing this many awaiters.
I haven't thought about concurrency, but you could look into the .NET concurrent collections like ConcurrentQueue. They're lock-free. You can also implement your own lock-free algorithms using the Interlocked class, but it's tricky to get right, and can introduce subtle bugs.

For example, WaitForFrames could use a priority queue (a heap), and WaitForSeconds could just use the built-in C# Timer. But I don't see many people needing this many awaiters.

I originally opted for this unordered array approach to make it super easy to create your own awaiters for it. That said, I could probably introduce some more interfaces to allow a priority queue based approach for WaitForFrames and WaitForSeconds. I don't know enough about their implementations to understand whether I'd see performance benefits. From my understanding, it could be a O(n) operation to add a new awaiter to the queue, because it could mean pushing n items back. Likewise, removing a finished awaiter could mean pulling n items before it. I suppose the tradeoff is between ~constant per-frame overhead from evaluating n items every frame and occasional but larger per-frame overhead from reshuffling collections on queue/dequeue.
Bringing up the C# Timer (System.Timers.Timer) brings me onto another idea; we could offload much of the awaiter evaluation onto a background thread and post the continuation to the desired sync context when it is finished, freeing up the main thread. Wouldn't work for all awaiters because some require evaluation to occur in the UnitySynchronizationContext.
Then there's the job system. Haven't worked with it before but I think it allows jobs to run in parallel in Unity's sync context; perhaps this could be adapted to UnityAsync?
Anyway, I went with a sync context awaiter on Add to resolve the concurrency issue. I know Interlocked.Increment, etc. exists but I'd have to introduce this into Process to work, which could impact on performance. I figured a simple check to see what context you're in would be faster than any more complicated concurrency business.

I went with a sync context awaiter on Add to resolve the concurrency issue.

I think that makes sense, although again, I don't know that much about how async/await works, so don't take my word for it. The UnitySynchronizationContext.Post() call internally uses a lock, but I wouldn't worry about it unless you're planning on queuing up thousands of awaiters per second from background threads. Your hot path is fast.

That said, I could probably introduce some more interfaces to allow a priority queue based approach for WaitForFrames and WaitForSeconds.

I don't recommending you implement these. You're doing the right thing by keeping things simple. Unless you have users that actually want to have huge numbers of active awaiters, the performance benefits will go unnoticed.
However, purely for interest, I'll talk a bit about how you might do this.
A priority queue and a heap are essentially the same thing. A priority queue would be the abstract notion of a queue where each item has a priority and high-priority items are dequeued first, while a heap is the data structure you'd use to implement a priority queue. Similar idea as a map or dictionary vs a hash table; hash table is the implementation.
In a classic binary heap Peek() is O(1) and Insert() and Dequeue() are O(log(n)). If you use a fancy schmancy Fibonacci heap, Insert() is also O(1) amortized. So you'd pay a small O(log(n)) cost whenever a WaitForFrames completes and is removed. You could basically have as many awaiters as will fit in memory with negligible performance impact.
A priority queue is only applicable if you can assign each item a priority. That works for WaitForFrames or WaitForSeconds, but won't work with WaitWhile.
For WaitForSeconds I mentioned the Timer class simply because it already exists, is easy to use, and is efficient. No need to mess with priority queues.
As a side note, the Queue class will have O(1) enqueue (amortized) and dequeue. It would be implemented internally as a circular array. It's only useful if you only ever need enqueue stuff at the end, so it doesn't really apply here.
Unity's Job system doesn't really let you do anything that might be unsafe. The only shared memory you can reference from a Job are NativeArray instances and the other native containers built on NativeArray. NativeArray has a bunch of safety checks (only in editor though, not in the standalone game) that protect against possible race conditions. They don't run in the UnitySynchronizationContext. They're useful when you need to do some heavy computations that don't need to reference anything (or rather, anything other than native containers).

A priority queue is only applicable if you can assign each item a priority. That works for WaitForFrames or WaitForSeconds, but won't work with WaitWhile.

I was thinking something like...
interface IPriorityAwaitInstruction<T> where T : IComparable<T>
{
	public T Priority { get; }
}

... for instructions which could be assigned a priority (and an accompanying priority queue processor), and keeping IAwaitInstruction for others but that's getting into over-engineered territory. I originally thought returning an int would be fine but that's not going to play too nicely with something like WaitForSeconds.
I'm going to close this issue because we've fixed it but thanks for your feedback and discussion on the other points :)


docs: add new ci example with github actions

This pull request contains an example for configuring a ci with Github Actions for Google Storage.

Hi, Do you have an example of how to integrate the import-deployer npm package to update import map on a root-config?


Model validate some attribute error

What steps will reproduce the problem?
I have two scripts:
<?php

namespace idarex\pingppyii2;

class OrderForm extends \yii\base\Model
{
    public $order_no;
    public $subject;

    public function rules()
    {
        return [
            [['order_no', 'subject'], 'required'],
        ];
    }
}

<?php

class OrderFormTest extends PHPUnit_Framework_TestCase
{
    public function testValidate()
    {
        $form = new \idarex\pingppyii2\OrderForm();
        $form->order_no = '1234';
        $this->assertTrue($form->validate('order_no'), 'order_no is not empty');
    }
}

And runs phpunit tests/OrderFormTest.php
What is the expected result?
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.

.

Time: 58 ms, Memory: 6.25Mb

OK (1 test, 1 assertion)

What do you get instead?
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.

F

Time: 62 ms, Memory: 6.25Mb

There was 1 failure:

1) OrderFormTest::testValidate
order_no is not empty
Failed asserting that false is true.

/Users/bob/Documents/idarex/pingpp-yii2/tests/OrderFormTest.php:11
/Users/bob/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:149
/Users/bob/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:100

FAILURES!

Additional info

Q
A

Yii version
2.0.7

PHP version
PHP 5.5.30 (cli)

Operating system
OS X 10.11.3 (15D21)

how about
$this->assertTrue($form->validate(['order_no']), 'order_no is not empty');

брехня, код выложен не весь
oknimdy@debian:~/www/yii2$ vendor/bin/phpunit tests/framework/base/PingTest.php
PHPUnit 3.7.38 by Sebastian Bergmann.

Configuration read from /home/oknimdy/www/yii2/phpunit.xml.dist

.

Time: 64 ms, Memory: 3.25Mb

OK (1 test, 1 assertion)

for code
<?php
namespace yiiunit\framework\base;

use yii\base\Model;
use yiiunit\TestCase;

class PingTest extends TestCase
{
    public function testPing()
    {
        $ping = new Ping();
        $ping->require = 'req';
        $this->assertTrue($ping->validate('require'));
    }
}

class Ping extends Model
{
    public $require;

    public function rules()
    {
        return [
            [['require'], 'required'],
        ];
    }
}

@mdmunir Thanks a lot, it works. It seems I should learn more about Yii2 internal source code.
@lynicidn Hey, I had two required property. You can  reproduce the problem: add one more property, and add required rule for it.

ну да, глупо было писать так https://github.com/yiisoft/yii2/blob/master/framework/validators/Validator.php#L240
там если не массив передан, то уже идет валидация всех аттрибутов перечисленных в валидаторе - это баг

@lynicidn I can't read what you said. but I can understood the code. Thank you!

@dcb9 am write for russian coders, reopen please issue, may be fixed it

It's not a bug because behavior is tested and documented, but it can be improved to support string, if nobody minds. @yiisoft/core-developers

My opinion: it does not make sense.

hm, need prepare attributes to array or throw exception
по русски - должно быть строгое приведение к ожидаемому типу или же выброшено исключение. Скрытая непредсказуемая неожидаемая логика - это и есть баг :)

Disagreed: method argument type is documented as array. If we will perform explicit check for the type match for each argument of each method around the framework it will produce significant performance impact.
There are many similar places around the core code.

@klimov-paul string not documented, only empty (null) in doc

https://github.com/yiisoft/yii2/pull/11376

https://github.com/yiisoft/yii2/blob/master/framework/base/Model.php#L328
Says:

@param array $attributeNames list of attribute names that should be validated.

What is uncrear?

@klimov-paul read next

* If this parameter is empty, it means any attribute listed in the applicable

 * validation rules should be validated.

what is behavior if is string ? exception? null? what?

@klimov-paul I'm unsure here, because somewhere we cast string to array and somewhere not.
For example:
https://github.com/yiisoft/yii2/blob/master/framework/caching/TagDependency.php#L43
https://github.com/yiisoft/yii2/blob/master/framework/behaviors/SluggableBehavior.php#L137
https://github.com/yiisoft/yii2/blob/master/framework/i18n/I18N.php#L107
... and so on
I'd like to see more opinions from @yiisoft/core-developers

It's currently documented and tested that it accepts array. I don't think it's a good idea to allow passing scalar to $model->validate().


Update k8stools.md

I had some trouble getting this to run with the provided commands, so I referred to the K8's documentation and followed the steps they gave and came to this solution. This seems to be a better way to go and may save others some stress.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I think we are going to close this out in favor of keeping the aws url current. thanks for submitting the error, though! I've pushed an update to the URL that should continue to work.


case sensitive search

Hi
i like to add feature case_sensitive search in database,if this feature does not exist i can add it like below:
$result = $this->db->where(...)->from(...)->case_sensitive()->get();

Can't happen, it depends on the underlying database (and that's not always MySQL).

Related: #4900


model = Sequential() model.add(Embedding(10000, embedding_size, input_length=max_words)) model.add(Conv1D(64, 3, padding='same')) model.add(Conv1D(32, 3, padding='same')) model.add(Flatten()) model.add(Dropout(0.2)) model.add(Dense(512,activation='relu')) model.add(Dropout(0.2)) model.add(Dense(1,activation='softmax’))

Please make sure that the boxes below are checked before you submit your issue. If your issue is an implementation question, please ask your question on StackOverflow or join the Keras Slack channel and ask there instead of filing a GitHub issue.
Thank you!

[ ] Check that you are up-to-date with the master branch of Keras. You can update with:
pip install git+git://github.com/keras-team/keras.git --upgrade --no-deps

[ ] If running on TensorFlow, check that you are up-to-date with the latest version. The installation instructions can be found here.

[ ] If running on Theano, check that you are up-to-date with the master branch of Theano. You can update with:
pip install git+git://github.com/Theano/Theano.git --upgrade --no-deps

[ ] Provide a link to a GitHub Gist of a Python script that can reproduce your issue (or just copy the script here if it is short).

@pvlakshmi Is there any issue here? If there is any issue, please provide more details about the issue, fill template and provide trace of the bug. Please let us know what is the backend you are using here. Thanks!

@pvlakshmi I noticed you had opened another issue. I am closing this as it is a duplicate issue. Thanks!


Add script to generate voting public key and voting authorization

Current dependencies on/for this PR:

feature/proof-of-stake

PR #988   👈

This stack of pull requests is managed by Graphite.


Dask to_csv no longer accepts Path object

What happened:  Writing to_csv using a pathlib Path raised an error.
What you expected to happen: Prior versions of Dask to_csv allowed Path objects.
Minimal Complete Verifiable Example:
from pathlib import Path
import dask.dataframe as dd
import pandas as pd

df = pd._testing.makeMixedDataFrame()
ddf = dd.from_pandas(df, 2)
pt = Path.cwd() / "test-csv/test-*.csv"
pt.parent.mkdir(exist_ok=True)

# Pandas accepts Path & str
df.to_csv(pt)
df.to_csv(pt.as_posix())

# Dask accepts str
ddf.to_csv(pt.as_posix())

# Dask raises on Path
ddf.to_csv(pt)

Traceback

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-23-20fd9cb33c42> in <module>
     16
     17 # Dask raises on Path
---> 18 ddf.to_csv(pt)

~/.conda/envs/hcenv/lib/python3.7/site-packages/dask/dataframe/core.py in to_csv(self, filename, **kwargs)
   1350         from .io import to_csv
   1351
-> 1352         return to_csv(self, filename, **kwargs)
   1353
   1354     def to_json(self, filename, *args, **kwargs):

~/.conda/envs/hcenv/lib/python3.7/site-packages/dask/dataframe/io/csv.py in to_csv(df, filename, single_file, encoding, mode, name_function, compression, compute, scheduler, storage_options, header_first_partition_only, compute_kwargs, **kwargs)
    784             name_function=name_function,
    785             num=df.npartitions,
--> 786             **file_options,
    787         )
    788         values = [to_csv_chunk(dfs[0], files[0], **kwargs)]

~/.conda/envs/hcenv/lib/python3.7/site-packages/fsspec/core.py in open_files(urlpath, mode, compression, encoding, errors, name_function, num, protocol, newline, **kwargs)
    198     List of ``OpenFile`` objects.
    199     """
--> 200     chain = _un_chain(urlpath, kwargs)
    201     if len(chain) > 1:
    202         kwargs = chain[0][2]

~/.conda/envs/hcenv/lib/python3.7/site-packages/fsspec/core.py in _un_chain(path, kwargs)
    256     bits = (
    257         [p if "://" in p else p + "://" for p in path.split("::")]
--> 258         if "::" in path
    259         else [path]
    260     )

TypeError: argument of type 'PosixPath' is not iterable

Erroring Environment
conda create -n fsspec dask fsspec=0.7.1

Dask version: 2.17
fsspec version: 0.7.1
Python version: 3.8.3
Operating System: RHL7
Install method (conda, pip, source): Conda

conda list

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main
blas                      1.0                         mkl
bokeh                     2.0.2                    py38_0
ca-certificates           2020.1.1                      0
certifi                   2<IP_ADDRESS>               py38_0
click                     7.1.2                      py_0
cloudpickle               1.4.1                      py_0
cytoolz                   0.10.1           py38h7b6447c_0
dask                      2.17.0                     py_0
dask-core                 2.17.0                     py_0
distributed               2.17.0                   py38_0
freetype                  2.9.1                h8a8886c_1
fsspec                    0.7.1                      py_0
heapdict                  1.0.1                      py_0
intel-openmp              2020.1                      217
jinja2                    2.11.2                     py_0
jpeg                      9b                   h024ee3a_2
ld_impl_linux-64          2.33.1               h53a641e_7
libedit                   3.1.20181209         hc058e9b_0
libffi                    3.3                  he6710b0_1
libgcc-ng                 9.1.0                hdf63c60_0
libgfortran-ng            7.3.0                hdf63c60_0
libpng                    1.6.37               hbc83047_0
libstdcxx-ng              9.1.0                hdf63c60_0
libtiff                   4.1.0                h2733197_0
locket                    0.2.0                    py38_1
markupsafe                1.1.1            py38h7b6447c_0
mkl                       2020.1                      217
mkl-service               2.3.0            py38he904b0f_0
mkl_fft                   1.0.15           py38ha843d7b_0
mkl_random                1.1.1            py38h0573a6f_0
msgpack-python            1.0.0            py38hfd86e86_1
ncurses                   6.2                  he6710b0_1
numpy                     1.18.1           py38h4f9e942_0
numpy-base                1.18.1           py38hde5b4d6_1
olefile                   0.46                       py_0
openssl                   1.1.1g               h7b6447c_0
packaging                 20.3                       py_0
pandas                    1.0.3            py38h0573a6f_0
partd                     1.1.0                      py_0
pillow                    7.1.2            py38hb39fc2d_0
pip                       20.0.2                   py38_3
psutil                    5.7.0            py38h7b6447c_0
pyparsing                 2.4.7                      py_0
python                    3.8.3                hcff3b4d_0
python-dateutil           2.8.1                      py_0
pytz                      2020.1                     py_0
pyyaml                    5.3.1            py38h7b6447c_0
readline                  8.0                  h7b6447c_0
setuptools                46.4.0                   py38_0
six                       1.14.0                   py38_0
sortedcontainers          2.1.0                    py38_0
sqlite                    3.31.1               h62c20be_1
tblib                     1.6.0                      py_0
tk                        8.6.8                hbc83047_0
toolz                     0.10.0                     py_0
tornado                   6.0.4            py38h7b6447c_1
typing_extensions         <IP_ADDRESS>                  py38_0
wheel                     0.34.2                   py38_0
xz                        5.2.5                h7b6447c_0
yaml                      0.1.7                had09818_2
zict                      2.0.0                      py_0
zlib                      1.2.11               h7b6447c_3
zstd                      1.3.7                h0b5b093_0

conda list --explicit

# platform: linux-64
@EXPLICIT
https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda
https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-mkl.conda
https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2020.1.1-0.conda
https://repo.anaconda.com/pkgs/main/linux-64/intel-openmp-2020.1-217.conda
https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.33.1-h53a641e_7.conda
https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.3.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.1.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.1.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl-2020.1-217.conda
https://repo.anaconda.com/pkgs/main/linux-64/jpeg-9b-h024ee3a_2.conda
https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.2-he6710b0_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1g-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/yaml-0.1.7-had09818_2.conda
https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.11-h7b6447c_3.conda
https://repo.anaconda.com/pkgs/main/linux-64/libedit-3.1.20181209-hc058e9b_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/readline-8.0-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.8-hbc83047_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.3.7-h0b5b093_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.9.1-h8a8886c_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.1.0-h2733197_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.31.1-h62c20be_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.3-hcff3b4d_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/certifi-2<IP_ADDRESS>-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/click-7.1.2-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/cloudpickle-1.4.1-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/dask-core-2.17.0-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/fsspec-0.7.1-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/heapdict-1.0.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/locket-0.2.0-py38_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/markupsafe-1.1.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/msgpack-python-1.0.0-py38hfd86e86_1.conda
https://repo.anaconda.com/pkgs/main/noarch/olefile-0.46-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/psutil-5.7.0-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/noarch/pyparsing-2.4.7-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/pytz-2020.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pyyaml-5.3.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/six-1.14.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/sortedcontainers-2.1.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/tblib-1.6.0-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/toolz-0.10.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.0.4-py38h7b6447c_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/typing_extensions-<IP_ADDRESS>-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/cytoolz-0.10.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl-service-2.3.0-py38he904b0f_0.conda
https://repo.anaconda.com/pkgs/main/noarch/packaging-20.3-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/partd-1.1.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pillow-7.1.2-py38hb39fc2d_0.conda
https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/setuptools-46.4.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/zict-2.0.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/distributed-2.17.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/jinja2-2.11.2-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.18.1-py38hde5b4d6_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/wheel-0.34.2-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pip-20.0.2-py38_3.conda
https://repo.anaconda.com/pkgs/main/linux-64/bokeh-2.0.2-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl_fft-1.0.15-py38ha843d7b_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl_random-1.1.1-py38h0573a6f_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.18.1-py38h4f9e942_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.0.3-py38h0573a6f_0.conda
https://repo.anaconda.com/pkgs/main/noarch/dask-2.17.0-py_0.conda

Non-Erroring Environment
conda create -n fsspec dask fsspec=0.6.3

Dask version: 2.17
fsspec version: 0.6.3
Python version: 3.8.3
Operating System: RHL7
Install method (conda, pip, source): Conda

conda list

# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main
blas                      1.0                         mkl
bokeh                     2.0.2                    py38_0
ca-certificates           2020.1.1                      0
certifi                   2<IP_ADDRESS>               py38_0
click                     7.1.2                      py_0
cloudpickle               1.4.1                      py_0
cytoolz                   0.10.1           py38h7b6447c_0
dask                      2.17.0                     py_0
dask-core                 2.17.0                     py_0
distributed               2.17.0                   py38_0
freetype                  2.9.1                h8a8886c_1
fsspec                    0.6.3                      py_0
heapdict                  1.0.1                      py_0
intel-openmp              2020.1                      217
jinja2                    2.11.2                     py_0
jpeg                      9b                   h024ee3a_2
ld_impl_linux-64          2.33.1               h53a641e_7
libedit                   3.1.20181209         hc058e9b_0
libffi                    3.3                  he6710b0_1
libgcc-ng                 9.1.0                hdf63c60_0
libgfortran-ng            7.3.0                hdf63c60_0
libpng                    1.6.37               hbc83047_0
libstdcxx-ng              9.1.0                hdf63c60_0
libtiff                   4.1.0                h2733197_0
locket                    0.2.0                    py38_1
markupsafe                1.1.1            py38h7b6447c_0
mkl                       2020.1                      217
mkl-service               2.3.0            py38he904b0f_0
mkl_fft                   1.0.15           py38ha843d7b_0
mkl_random                1.1.1            py38h0573a6f_0
msgpack-python            1.0.0            py38hfd86e86_1
ncurses                   6.2                  he6710b0_1
numpy                     1.18.1           py38h4f9e942_0
numpy-base                1.18.1           py38hde5b4d6_1
olefile                   0.46                       py_0
openssl                   1.1.1g               h7b6447c_0
packaging                 20.3                       py_0
pandas                    1.0.3            py38h0573a6f_0
partd                     1.1.0                      py_0
pillow                    7.1.2            py38hb39fc2d_0
pip                       20.0.2                   py38_3
psutil                    5.7.0            py38h7b6447c_0
pyparsing                 2.4.7                      py_0
python                    3.8.3                hcff3b4d_0
python-dateutil           2.8.1                      py_0
pytz                      2020.1                     py_0
pyyaml                    5.3.1            py38h7b6447c_0
readline                  8.0                  h7b6447c_0
setuptools                46.4.0                   py38_0
six                       1.14.0                   py38_0
sortedcontainers          2.1.0                    py38_0
sqlite                    3.31.1               h62c20be_1
tblib                     1.6.0                      py_0
tk                        8.6.8                hbc83047_0
toolz                     0.10.0                     py_0
tornado                   6.0.4            py38h7b6447c_1
typing_extensions         <IP_ADDRESS>                  py38_0
wheel                     0.34.2                   py38_0
xz                        5.2.5                h7b6447c_0
yaml                      0.1.7                had09818_2
zict                      2.0.0                      py_0
zlib                      1.2.11               h7b6447c_3
zstd                      1.3.7                h0b5b093_0

conda list --explicit

# platform: linux-64
@EXPLICIT
https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda
https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-mkl.conda
https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2020.1.1-0.conda
https://repo.anaconda.com/pkgs/main/linux-64/intel-openmp-2020.1-217.conda
https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.33.1-h53a641e_7.conda
https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.3.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.1.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.1.0-hdf63c60_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl-2020.1-217.conda
https://repo.anaconda.com/pkgs/main/linux-64/jpeg-9b-h024ee3a_2.conda
https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.2-he6710b0_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1g-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/yaml-0.1.7-had09818_2.conda
https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.11-h7b6447c_3.conda
https://repo.anaconda.com/pkgs/main/linux-64/libedit-3.1.20181209-hc058e9b_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/readline-8.0-h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.8-hbc83047_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.3.7-h0b5b093_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.9.1-h8a8886c_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.1.0-h2733197_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.31.1-h62c20be_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.3-hcff3b4d_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/certifi-2<IP_ADDRESS>-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/click-7.1.2-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/cloudpickle-1.4.1-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/dask-core-2.17.0-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/fsspec-0.6.3-py_0.tar.bz2
https://repo.anaconda.com/pkgs/main/noarch/heapdict-1.0.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/locket-0.2.0-py38_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/markupsafe-1.1.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/msgpack-python-1.0.0-py38hfd86e86_1.conda
https://repo.anaconda.com/pkgs/main/noarch/olefile-0.46-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/psutil-5.7.0-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/noarch/pyparsing-2.4.7-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/pytz-2020.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pyyaml-5.3.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/six-1.14.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/sortedcontainers-2.1.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/tblib-1.6.0-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/toolz-0.10.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.0.4-py38h7b6447c_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/typing_extensions-<IP_ADDRESS>-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/cytoolz-0.10.1-py38h7b6447c_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl-service-2.3.0-py38he904b0f_0.conda
https://repo.anaconda.com/pkgs/main/noarch/packaging-20.3-py_0.conda
https://repo.anaconda.com/pkgs/main/noarch/partd-1.1.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pillow-7.1.2-py38hb39fc2d_0.conda
https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.1-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/setuptools-46.4.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/zict-2.0.0-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/distributed-2.17.0-py38_0.conda
https://repo.anaconda.com/pkgs/main/noarch/jinja2-2.11.2-py_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.18.1-py38hde5b4d6_1.conda
https://repo.anaconda.com/pkgs/main/linux-64/wheel-0.34.2-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pip-20.0.2-py38_3.conda
https://repo.anaconda.com/pkgs/main/linux-64/bokeh-2.0.2-py38_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl_fft-1.0.15-py38ha843d7b_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/mkl_random-1.1.1-py38h0573a6f_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.18.1-py38h4f9e942_0.conda
https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.0.3-py38h0573a6f_0.conda
https://repo.anaconda.com/pkgs/main/noarch/dask-2.17.0-py_0.conda

So the only difference is fsspec 0.7.1 vs. 0.6.3? Most likely an issue in fsspec then.
cc @martindurant.

I can look into it; but I'm surprised that it ever did, since dask wants to write multiple files and often to remote stores, which Path objects don't normally do. I didn't think that combining glob characters with Path was expected usage.
Maybe it would be reasonable to convert Path -> local path string at the first opportunity, but I'm pretty sure fsspec never did this (unless there some implicit str() somewhere).
Aside: I'm surprised Path.cwd() / "test-csv/test-*.csv" works, I would have thought that this would represent a filename like r"test-csv/test-*.csv" in the current directory rather than a level deeper, but goes to show what I know about Paths...

Maybe it would be reasonable to convert Path -> local path string at the first opportunity

I recall the stringify_path utility function being added for this purpose

Likely related issue, moving between fsspec 0.6.3 & 0.7.1
from pathlib import Path
import dask.dataframe as dd
import pandas as pd

df = pd._testing.makeMixedDataFrame()
ddf = dd.from_pandas(df, 2)

dask_file_path = [
    "csv-dir-*/",              # Passes in both
    "csv-dir/",                # Passes in 0.6.3; Fails in 0.7.1
    "csv-dir/file-*.csv",      # Passes in 0.6.3; Fails in 0.7.1
    "file-*.csv"               # Passes in both
]

for p in dask_file_path:
    ddf.to_csv(p)

I recall the stringify_path utility function being added for this purpose

open_files should call this...
Note that the latter block all pass for me on fsspec 0.7.4 (conda-forge release, ahead of defaults)

Thanks for pointing out the 0.7.4 version fix @martindurant
I updated our company's internal to_csv wrapper to always pass a str to Dask's to_csv, and added conda-forge::fsspec to our conda environment. That resolved the current issue for us.


feat: Make structs Send + Sync, lazily initialize scripts

Closes #909.
Closes #377.

@tomyrd was able to test this set of changes with the client's integration tests (including web client), so should be good to merge


I2C example

Hi Ivan! Thanks for making this port to the new component system :)
Would it be possible for someone to create an I2C example? I'm interested in a specific use case to support the PA1010D which is used in the open source Ribbit Network project (see more here.)

I got the GPS in question and will try to add an example in the next couple of weeks.

@beriberikix you are welcome to try #16.
I haven't had a chance to test if UART still works after these changes, but I2C seems to work.

Hi @igrr ! Thanks so much for this implementation. I'm trying it out for Ribbit Network, but it seems like the only data coming from the PA1010D GPS is in the form of GPGSA and GPGSV sentences, which don't contain position data (reference).
It seems like the device is sending other sentence types, although, weirdly, I can't find too much information about these other sentence types (GLGSA, GNRMC, GNVTG, GNGGA...)
You can see the code I'm using here
Did you manage to receive other sentence types from your PA1010D GPS? If so, do you have an idea about what I'm doing wrong?

Seems like GNRMC data may be what I want from the device (GNRMC reference) -- I guess this isn't currently supported in the NMEA package. Do you have a suggestion for a workaround/another package to use?

@akhilgupta1093 Do you specifically need GNRMC (i.e. GPS+GLONAS) and not GPRMC (GPS)?
If you want to configure the receiver to send particular sentences or enable/disable particular talkers (GPS/GPS+GLONAS) you need to send some commands to it. The commands are vendor-specific. Adafruit has made the command reference for this module available here. You can also check their tutorial, it has a few sample PMTK commands.

I've opened an upstream PR to add support for GN* sentences in libnmea: https://github.com/jacketizer/libnmea/pull/58.

Thanks for the references, I'll take a look at enabling/disabling particular talkers. We only need location data, not satellite data, so GP* would be good enough for us. In any case, I look forward to your PR being merged. Thanks a ton for your help!

@igrr I'm having a little trouble configuring the receiver like you mentioned above (the examples are in circuitpython, I'm using esp-idf and c). I've decided to wait for your GN* support to be merged into libnmea-esp32 as the solution to my issue. No time rush, of course, just let me know when this is done, thanks

@igrr I see that your PR has now been merged into the jacketizer/libnmea repo! If you update your fork of the repo, I think I should be good to go, if I'm not mistaken

@akhilgupta1093 I have updated https://github.com/igrr/libnmea-esp32/pull/16, please give it a try.

You can modify the idf_component.yml in your project to install the component from a git repository, until a new version is released:
dependencies:
  libnmea-esp32:
    git: https://github.com/igrr/libnmea-esp32.git
    version: feature/i2c

(or version: <git commit id>)

Are you sure the module actually has a fix on the satellites?
I have put my module next to the window and it took about 5 minutes for the module to acquire a fix. (I have a relatively clear view of the sky outside; if you have other buildings nearby it may take even more time.)

Thanks for the tip, seems like there's data being ingested now, but for some reason it's facing an error trying to read the data bytes. (here's my branch for reference)
Getting this error log repeatedly:
E (26673) frog_sensor: Failed to read byte over I2C: ESP_FAIL (0xffffffff)

Ah it worked after disconnecting and re-connecting the wires. Thanks so much for all your help! Seems like the integration is complete on our part.


Fixes cockroachdb/helm-charts#34

Re-using the same chart logic that was used for the other init containers on the cluster-init job's init container. This is a fix for #34. I've tested this on a k8s 1.18 cluster with resource quotas in place and it resolved the issue.

@DuskEagle any ETA on when this can get merged? It's a very simple change and would help anyone using Resource Quotas in k8s a lot (being able to use the official CockroachDB chart vs. having to point to an altered one)

Found the same problem in the init container (init-certs) for the StatefulSet, so fixed that as well. It seemed like a good idea to allow users to control this with the values file just as with the init job's init.resources setting, so I created a similar block for statefulset.init.resources in values.yaml and commented that appropriately.


Default Parameters in Class

Using jitclass when functions have default parameters fails.
Minimal working example:
spec = [
    ('a', numba.float32),
    ('b', numba.float32),
    ('c', numba.float32),
]

@numba.jitclass(spec)
class Test:
    def __init__(self, a=1, b=2, c=3):
        self.a = a
        self.b = b
        self.c = c

test = Test()

Error message:
Traceback (most recent call last):
  File "test.py", line 53, in <module>
    test = Test()
  File "/home/user/.local/lib/python3.5/site-packages/numba/jitclass/base.py", line 114, in __call__
    return cls._ctor(*args, **kwargs)
TypeError: not enough arguments: expected 3, got 0

Thanks for the report, I don't think this is currently supported.

Just ran into this, would love to see this working.

same

same

same

great to see this has been added to the Numba 0.40 milestone.
The more I use it, the more I realize not being able to rely on default values pushes me to write somewhat ugly code.
Not just this: it forces me to change my classes in ugly ways if I plan to decorate them with jitclass.
Thanks!

Hi @stuartarchibald, can I ask you the status on this? Is this available in 0.41.0dev0? Is there any chance you need some low level support on this? Thanks!

@GiorgioBalestrieri this will hopefully make it into 0.41.x. As it is not implemented yet it won't be in dev builds. The 0.40.0 release ended up being large and very involved with complicated new features, which unfortunately meant that there simply wasn't sufficient time to work on this issue within that release cycle window.
You are of course more than welcome to go and work on this feature to get it done quicker, some effort has been put into https://github.com/numba/numba/pull/2894 which may be a good place to start? Pull requests etc are welcome.

It looks like default values do not work at any jitclass method:
@numba.jitclass([])
class Test():
    def __init__(self):
        pass
    def Foo(self, param=1):
        print (param)

obj = Test()
obj.Foo()

fails with
LoweringError: invalid number of args: expected 2, got 1

would love to have it implemented.

This was fixed in https://github.com/numba/numba/pull/3852, closing. 0.44 has support for this.


More consistent default label format

Current it’s not very nice
x: 50.0 but 100, 150
y: 90.0 but 100

Also I don’t want my 0.8 to be 800m (milli-)  by default.


Make figures loaded from experiment db viewable in notebook

Summary
Make figures loaded from experiment db viewable in jupyter notebook as suggested in #436 .
Details and comments
Some details that should be in this section include:

Why this change was necessary
To  make it more comfortable to use figures in jupyter notebook.
What do users and developers need to know about this change
To display figures of experiment data that were loaded from experiment db don't need to convert to SVG.

Figures were already made viewable in the notebook by #814 which made .figure() return a FigureData object with special repr methods for Jupyter. I am not sure there is a benefit to modifying the figure attribute like this.

I thought that we would like the same behavior for loaded experiment and executed one on Jupyter Notebook.
From what I can see the .figure() method is working as you says, but its output isn't ideal (but maybe its only in my environment) :

while with SVG converter it looks better:

Oh, you're right. I was testing the initial figure, not the one loaded from the db. For me, loading from the db actually gives no image. For the problem is that in _repr_svg_ here: https://github.com/Qiskit-Extensions/qiskit-experiments/blob/2cc444ac33783ce896662e39cd731b4874f9a0ae/qiskit_experiments/framework/experiment_data.py#L191-L196
self.figure is bytes but then str(self.figure) is just a string starting with b with the Python string representation of the bytes content, not the bytes content decoded as a string. For me, changing str(self.figure) to self.figure.decode("utf-8") resolves the problem. Can you check if that works for you as well? It would be better to fix the repr method than to make the return type variable based on the environment.

Oh, you're right. I was testing the initial figure, not the one loaded from the db. For me, loading from the db actually gives no image. For the problem is that in _repr_svg_ here:
https://github.com/Qiskit-Extensions/qiskit-experiments/blob/2cc444ac33783ce896662e39cd731b4874f9a0ae/qiskit_experiments/framework/experiment_data.py#L191-L196
self.figure is bytes but then str(self.figure) is just a string starting with b with the Python string representation of the bytes content, not the bytes content decoded as a string. For me, changing str(self.figure) to self.figure.decode("utf-8") resolves the problem. Can you check if that works for you as well? It would be better to fix the repr method than to make the return type variable based on the environment.

I updated as you suggested and it works 😄 ready for review


[dashboards] Update interval type from int to string in screenboards from legacy api

In the legacy api, the interval type in the compute field of the log query is a string, not an integer.

LGMT, merging. Thanks!


feat(common_awsim_sensor_launch): distortion corrector add new param

Description
PR https://github.com/autowarefoundation/autoware.universe/pull/8380 add a new parameter for distortion correction node, thus common sensor launch also needs to update the parameter

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[ ] I've confirmed the contribution guidelines.
[ ] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@SakodaShintaro could you review this, thanks!

I'm sorry, I don't have the authority to change the reviewer either.
@shmpwk
Could you review this?


[New game]:  Speaking the Number and Guessing

🎮 Game Request
Number Guessing by Speaking the Number
Number Guessing by Speaking the Number is an interactive game where players guess a randomly generated number within a specified range using voice commands. The game leverages speech recognition to convert spoken guesses into text, providing a hands-free and engaging experience. Upon starting, the game generates a random number and prompts the player to begin guessing by speaking their number.
Screenshot

Point down the features
Features
Players receive real-time feedback, indicating whether their guess is too high, too low, or correct. This feedback helps them narrow down their guesses efficiently. The game also offers voice feedback to guide and encourage players throughout their guessing journey.
Upon correctly guessing the number, players can choose to play again or adjust the difficulty level for a new challenge. This game blends the simplicity of a classic guessing game with modern technology, providing a fun and immersive experience for users of all ages.
Key features include multiple difficulty levels with different number ranges, score tracking to display the number of guesses taken, and multilingual support for both speech recognition and voice feedback. The user-friendly interface ensures easy navigation, and the game is enhanced with background music and sound effects to make the experience more enjoyable.
Select program in which you are contributing
IWOC2024, GSSoC24, hacktoberfest, Other
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @ankit071105 , You can't have another issue before completing the previous one 😀
you already have the following 1 open issues 👀 ! :
#4845

Hey @ankit071105 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇

Hey @ankit071105 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹


How to use App outside vendor folder?

Hello
At this moment i need to have all my resources views, controllers, traits and models inside vendor folder, is there a way to use the common Laravel folders for this? inside app/http/controllers ? for example.

No, you should never put anything inside the vendor folder.  You should be using your project's app folder.  What's making you think you need to do this?  Maybe the documentation can be clearer but generally speaking, you should not place anything in the vendor folder for this or any other package.

This is the wrong way to do it. Never put your code in the vendor directory.

Yes, thats why im asking, Laravel is taking the view from vendor (ohmybrew) and not from common folder...

The framework is returning the view being asked for.  If you want to serve another view, you can do that.  If the view is extending the packages layout, then that layout will be used.
You can override the package routing per the documentation - maybe this will help:
Overriding and Extending

I need to use the folder this way?
resources/views/vendor/shopify-app/layouts/default.blade.php
everything must be inside
resources/views/vendor/shopify-app
?
Because im getting Oauth error invalid_request when using the view inside resources and not inside vendor.

The layout that ships with the package has the Shopify init so in your own view you can extend the package's layout or you can create your own in your project's resource folder but it has to have the javascript for initializing the shopify app.  Have a look at the package's default layout.

Yes, i understand the concept,still getting error here:
GuzzleHttp \ Exception \ ClientException (400)
400 - Oauth error invalid_request
Im extending as documents says
my home view has the extend call
@extends('shopify-app::layouts.default')

Ok, i got it, the doc is wrong:
It needs to be this way:
Route::get(
    '/',
    'HomeController@index')->middleware(['auth.shop', 'billable'])->name('index');

It sounds like you might do well with watching the intro to Laravel course on laracasts (its free). You can find it here: https://laracasts.com/series/laravel-from-scratch-2017
I would highly recommend watching the whole series before you continue with this as it will save you a lot of headache.

Great thank you, already got it working, also it was a matter of cache, doing php artisan cache:clear also worked. Thank you, i was able to work outside vendor now :)

Sorry yes, the views are extendable, it just follows standard laravel packaging so you can define views outside the package and define your own, in the wiki link above. Will note the issue in wiki too, thanks!


high score submission doesn't work anymore

There is a CORS error on localhost that can be fixed by installing and enabling the CORSe Firefox addon.
However even then access is denied despite access being set to "everyone".
After recreating the URL at https://script.google.com, giving the app script access to spreadsheets and adding redirect: 'follow' (unsure if that had an impact), it receives another CORS error, however that can be fixed by deactivating CORSe again.
Now it posts the form and receives a response, however with an error:
{
	"result": "error",
	"error": {
		"message": "Methode \"getRange\" von null kann nicht aufgerufen werden.",
		"name": "TypeError",
		"fileName": "Code (Submit Form to Google Sheets)",
		"lineNumber": 17,
		"stack": "\tat Code (Submit Form to Google Sheets):17 (doPost)\n"
	}
}

Works again, needed to be deployed again for changes to show.


Support checkout out #.x branch types

Description
Support checkout out #.x branch types
This change was included in change https://github.com/opensearch-project/security-dashboards-plugin/pull/1167 that was merged into 2.x
Check List

[ ] ~New functionality includes testing~
[ ] ~New functionality has been documented~
[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #1179 (353674d) into main (eee08a5) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1179   +/-   ##
=======================================
  Coverage   71.82%   71.82%
=======================================
  Files          88       88
  Lines        2023     2023
  Branches      268      268
=======================================
  Hits         1453     1453
  Misses        508      508
  Partials       62       62

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


feat: expose methods to examine OutputUnits

The Output::basic method returns a BasicOutput. Prior to this patch the
only way to examine the contents of this data structure was to serialize
it to JSON. This patch adds methods to examine the outputs from Rust, as
well as documentation on how to do so.
Signed-off-by: Alex Good<EMAIL_ADDRESS>

Released in 0.13.2!