REST API endpoint randomly fails

Hi guys, I'm trying to retrive variant data from Ensembl's REST API. Most of the time (95%+) things works fine, but I have noticed some of the requests fail by saying:
{
  "error": "Can't call method \"close\" on unblessed reference at /nfs/public/ro/ensweb/live/rest/www_110/ensembl-io/modules/Bio/EnsEMBL/IO/TabixParser.pm line 121.\n"
}

This is the request:  https://rest.ensembl.org/variation/human/rs147767607?content-type=application/json;phenotypes=1
As I said, most of the times it works. It fails randomly.

Hi there!
I tested this query with a few hundred requests, internally and externally.
I'm afraid I could not reproduce this.
Did the query fail for exactly this accession - or could it have been a different one?
I also looked at the code and found an interesting comment - basically, someone ran into such an issue before and applied a fix, but at that time couldn't pinpoint the exact cause.
The fix was in one method, but should be applied to another part too.
So it's possible that this is the same issue, but I'd still like to understand better where this is originating.
If you could shed more light on what you are doing, that would be great. Which accessions, which requests, are there requests in parallel, anything else that might be relevant.
Thanks!

Hi, Thank you so much for getting back to me! I had a bunch of rsIds (~200) to map, most of the time I had no problem getting back the expected response, however there were a few where I got problem:
variant: rs34922185, rs34922185
response:
{
  "error": "rs34922185, rs34922185 not found for human"
}
variant: rs58523027
response:
{
  "error": "Can't call method \"close\" on unblessed reference at /nfs/public/ro/ensweb/live/rest/www_110/ensembl-io/modules/Bio/EnsEMBL/IO/TabixParser.pm line 121.\n"
}
variant: rs756441495, rs756441495
response:
{
  "error": "rs756441495, rs756441495 not found for human"
}
variant: rs782470771, rs782470771
response:
{
  "error": "rs782470771, rs782470771 not found for human"
}
variant: rs147767607
response:
{
  "error": "Can't call method \"close\" on unblessed reference at /nfs/public/ro/ensweb/live/rest/www_110/ensembl-io/modules/Bio/EnsEMBL/IO/TabixParser.pm line 121.\n"
}

Obviously, where by accident one line contained two rsIDs, the query failed. Then there were these low number of seemingly normal rsids that also failed with the detailed error. If that matters: I was running the queries on a VM in Google cloud.
This was the python function with the query:
def get_mapping(rsid):
    url = f'https://rest.ensembl.org/variation/human/{rsid}?content-type=application/json;phenotypes=1'

    data = requests.get(url).json()

    # Is there any mapping:
    if ('mappings' not in data) or (len(data['mappings']) == 0):
        print(f'variant: {rsid}')
        print(f'response:\n{json.dumps(data, indent=2)}')
        return ['No mapping at all.']

    # Extracting canonical mappings only:
    canonical_mappings = [
        mapping['location'] for mapping in data['mappings']
        if mapping["coord_system"] == "chromosome"
    ]

    if len(canonical_mappings) == 0:
        return ["No canonical mapping"]
    else:
        return canonical_mappings

I got an infrequent error message when I was requesting data from the browser without the ;phenotypes=1 switch, from EBI, just hitting the refresh button. So no bulk download was going on, just single threaded operation.

I could now reproduce your issue - thank you.
As you said, it only happens sometimes and not very often. The involved code should be reading from a file, so having this fail sometimes is surprising. I'll try to work my way through our stack.
Meanwhile, I will put in the mentioned fix, but it could be a while before this goes live.

Thank you @EbiArnie for looking into the issue and I'm kind of happy the issue could be reproduced.

Closing as got no new follow up since patching


[Bug]: Cant make plugin to work [base path does not exist and other errors]

Describe the bug
I have installed Obsidian 1.6.7, Obisidian Git, git 2.41.0.windows.2
Where git says:
C:\Program Files\Git\cmd\git.exe
C:\Program Files\Git\mingw64\bin\git.exe
C:\Program Files\Git\bin\git.exe
I have created a vault in folder
C:\Users\xxx\Desktop\diy\stuf
I have added a .gitignore with the .obsidian and .gitignore listed.
I have created a repository in the same folder.
Push, commit, and remote push work from git.
Configuration of obsidian git plugin:
git binary path is set to one of the three listed by where git (see above). Tryed all combinations with or without "".
Costum base path and custom git directory is set to
C:\Users\xxx\Desktop\diy\stuf. Tryed all combinations with or without "", with or without \ at the end.
Sorry for bad english/formating. First bug report for me. Tried to list all available data.
Thank you in advance.
Relevant errors (if available) from notifications or console (CTRL+SHIFT+I)
top of settings page it says: git is not ready. when all settings are correct you can configure auto backup, etc. This does not change.

*****************

Different base path for git binary configurations and errors

***************
without quotation marks I get this message in upper right corner of screen but no errors in With ctrl + shift + i: Obsidiangit: base path does not exist

*****************
with quotation marks i get no message in upper right corner of screen but the following With ctrl + shift + i:
Error: spawnSync C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync {C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync }C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync "C:\Program Files\Git\cmd\git.exe~ ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync "C:\Program Files\Git\cmd\git.exe ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync "C:\Program Files\Git\cmd\git.exe" ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at SimpleGit.updateGitPath (plugin:obsidian-git:30333:10)
    at eval (plugin:obsidian-git:32768:29)
    at t.onChanged (app.js:1:1487413)
isGitInstalled @ plugin:obsidian-git:30392
plugin:obsidian-git:30392 Error: spawnSync "C:\Program Files\Git\cmd\git.exe" ENOENT
    at Object.spawnSync (node:internal/child_process:1124:20)
    at spawnSync (node:child_process:891:24)
    at SimpleGit.isGitInstalled (plugin:obsidian-git:30384:57)
    at SimpleGit.setGitInstance (plugin:obsidian-git:29730:14)
    at eval (plugin:obsidian-git:32795:29)
    at HTMLButtonElement.<anonymous> (app.js:1:1484574)
isGitInstalled @ plugin:obsidian-git:30392

*************************
Different repository path settings
ctrl + p commands (git ignore works) all other commands:
without quotation marks: cant find a valid git repository. please create one via the given command or clone an existing `repo`
with quotation marks: cant run git command
without \ at the end: cant run git command

Steps to reproduce
Configuration steps listed above
Expected Behavior
Eliminate errors.
Work as in istalation guide.
Addition context
No response
Operating system
Windows
Installation Method
None
Plugin version
2.25.0

Please try to leave the custom base path and custom git dir directory settings empty. You should be able to leave the git binary path empty as well, but this depends on your PATH settings.


 Renovate updates for Go modules fail this check almost every time. Try to fix the situation by making Renovate run go mod tidy.

Look for any open pull requests in the repository with the title "e2e-tests update" and
see if there are recent e2e-tests updates that will be applicable to your change.

Might help with #1150 #1140 #1139 #1138


Using nanoScroll with w2ui

Hey there,
I'm trying to integrate nanoScroll with w2ui Layout , but I fail each time.
Actually I've a Sidebar in my layout and wish to use nanoScroll jQuery library for vertical scrollbar.
Can you show me a snippet code about how to accomplish that task ?
Thank you,

I am not familiar with nanoScroll, but I would suggest you initiate scroll in onRefresh event in the onComplete clause.

Ok, let me check this .. I'll update here. Thanks.

Well, I just came up with below code, now at least see the nanoScroller ... but it is kinda messy .. I mean I see two scrollbars, one is nanoscroller which appears but not working , the other one is firefox default scrollbar which is active.
	onRefresh: function(event) {
	    	$('.w2ui-sidebar-div').addClass('nano');
	    	$('.nano').nanoScroller();
	}

Hello  vitmalina ,
I just quit using nanoScroller and instead used slimScroll and as you suggested I override onRefresh() event and it just did the trick ;)
Thanks,


content_types_provided should be allowed to return the empty list when no Accept header is specified

The implementation today unconditionally returns a 406 if the content_types_provided callback for cowboy_rest:
{[], Req2, State2} ->
    not_acceptable(Req2, State2);

I think that it should take into account the situation where the client doesn't specify any Accept header, in which case it should skip the content negotiation.

If you don't provide content then doing a GET request will always fail, so I'm not sure what you are trying to say. What is the expected response?
Cowboy does handle the case where accept isn't defined when content is provided. https://github.com/ninenines/cowboy/blob/master/src/cowboy_rest.erl#L476-L486
Content negotiation is also useful for other methods. For example if you return a body following a POST request, it can tell you which content type to use.
The only cases where we don't care about content negotiation is when the resource never returns a body. In that case simply do not implement content_types_provided. Returning [] is for explicitly rejecting the request, for example if you apply additional heuristics on top of what Cowboy is doing.

Imagine an endpoint where:
allowed_methods(Req, State) ->
    {[<<"OPTIONS">>, <<"HEAD">>, <<"GET">>, <<"POST">>, <<"DELETE">>], Req, State}.

and where only the GET method should send a content, whereas POST and DELETE should return 204, ideally we should be able to define content_types_provided as:
content_types_provided(#{method := <<"GET">>} = Req, State) ->
    {[
        {<<"application/json">>, to_json}
    ], Req, State};
content_types_provided(Req, State) ->
    {[], Req, State}.

However, this doesn't work, because the current cowboy_rest logic is tied to the fact that content_types_provided and doesn't handle the case where content_types_provided but returns the empty list.

You don't need to go that far, you can just do:
content_types_provided(Req, State) ->
    {[
        {<<"application/json">>, to_json}
    ], Req, State}.

I still think that implementing content_types_provided/2 and returning the [] (1) should be equivalent to not implementing it (2).
The current implementation handles (1) as reject all requests with 406, whereas (2) only returns 406 if the client actually sends an Accept header.
I suggest changing the implementation such as (1) and (2) are equivalent. Effectively handling the case where the client doesn't send any Accept header.

They can't be equivalent because when the callback is not implemented it is equivalent to returning [{<<"text/html">>, to_html}].
If you need to have the equivalent you need to return this and not just [].


Option to exclude CookieStorage

First of all, many thanks for this library!
Since the CookieStorage has limits, it would be useful to have an option to exclude this storage from fallbacks.

sure, you can do that by setting your own instance similar to what this library does here: https://github.com/ripeworks/local-storage-fallback/blob/master/src/index.js
import { isSupported, MemoryStorage } from "local-storage-fallback";

let storage = null;

if (isSupported('localStorage')) {
  // use localStorage
  storage = window.localStorage;
} else if (isSupported('sessionStorage')) {
  // use sessionStorage
  storage = window.sessionStorage;
} else {
  // use memory
  storage = new MemoryStorage();
}

export default storage;


How to continue the <SELECTION> :AIChat using .aichat file?

Thanks for this amazing plugin! With the .aichat file, I can easily continue my chat conversation. However, when I select some text in another file and execute :'<,'>AIChat, a new chat session is opened. Is there a way to make it continue in the opened .aichat file?

Hi, it is possible to reuse open chat within the active window, e.g. if you open chat in a split (AINew right).
However it does not work for .aichat files, but it was part of the plan, this is related TODO comment:
https://github.com/madox2/vim-ai/blob/main/autoload/vim_ai.vim#L153

Thanks! The TODO comment is exactly what I wished for!

This feature has been added in #88


mockserver-client-scala

Hi James,
JFYI: I wrote it on weekend: https://github.com/Unisay/mockserver-client-scala
If you're interested in incorporating it into the mockserver repo - let me know.

I had decided not implemented a scala client because scala runs on the JVM so the existing Java client should be available for anyone using scala to use.  There are currently a number of scala projects I know using the Java client, however, is there something in the scala client you implemented that makes it nicer to use in scala, if so perhaps the java client could be extended to support that feature?
Thanks,
James

There are currently a number of scala projects I know using the Java client

Java client can be used from Scala, true.
However, there is something in the Scala client I implemented that makes it nicer to use in Scala - it is DSL that utilises Scala language features (singleton objects, infix method notation, implicit conversions, etc.)
Its better to compare by example:
Java (used from scala)
val client = ClientAndServer.startClientAndServer(8080)

client
  .when(mockRequest()
      .withPath("/path")
      .withMethod("POST")
      .withHeader("Content-Type", "text/plain")
      .withQueryStringParameter("key", "value"))
  .respond(mockResponse()
      .withStatusCode(200)
      .withBody("Response body"))

Scala (one-liner)
implicit val client = ClientAndServer.startClientAndServer(8080)

when post "/path" has ContentType("text/plain") + param("key", "value") respond Ok + "Response body"

Scala (multi-liner)
implicit val client = ClientAndServer.startClientAndServer(8080)

when post "/path" has {
  ContentType("text/plain") and
  param("key", "value")
} respond {
  Ok and
 "Response body"
}

So the main added value is readability.
Additional value is type-safety (predefined HTTP methods, common headers and HTTP statuses)

I agree that one line expectations is a nice feature.
I'm not trying to be awkward but I'm reluctant to add another client as there are currently eight separate clients that each require updating when ever the server side code changes.  Adding another two (MockServer & proxy) would still further increase the amount of code to make a new feature or refactor an existing feature.  Where a client adds support for a completely new language that does not already exist there is a case as the benefit could outweigh the cost, but currently in the case of Scala I don't personally believe this to be the case.
In addition I'm not sure that making the HTTP methods, common header and HTTP statuses type safe is required.  This is because the io.netty.handler.codec.http package already contains this and is part of the Java based client.  I wanted to avoid trying to duplicate this sort of logic.  It is also available numerous other libraries including from google, apache and spring etc.

Thanks for your reasoning, which I fully understand and respect.
Since I am going to use Scala client DSL in my project at work anyway, here
is what I suggest:
I keep it in my Github repository
https://github.com/Unisay/mockserver-client-scala
I maintain it and make sure its compatible with the future versions so that
you don't have this burden for the little added value :)
You drop a link somewhere in the mock-server documentation saying that
there is a third party maintained Scala DSL.
If users find it useful with time - you can always revisit the decision.
What do you think, James?

I agree that sounds like a good plan.  In the next week I'll update the documentation with a link to your Scala client.


Fix syntax error about FBLPromise+Wrap.m

This pull request fixes this issue: #164
(I'll fix this issue since there seems to be no response about it for a while...)
Thanks in advance.

And I checked unit test passed using Xcode🙂

I have updated the commit. Could you check it?

Thanks!


small sample size bias choking on data sets which appear to have estimates same as starting values

see issue #80


Update Version

Kleeja Version

Hmm i don't know how to add it to https://github.com/kleeja-official/kleeja/pull/106


shortner  use origin instead of host

CATEGORY
Choose one

[ ] Bug Fix
[ x] Enhancement (new features, refinement)
[ ] Refactor
[ ] Add tests
[ ] Build / Development Environment
[ ] Documentation

SUMMARY

https://github.com/apache/incubator-superset/issues/7839
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN

Tested locally
ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

REVIEWERS

Why removing "scheme"?

scheme gets appended automatically from what i have seen in my testing
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin


PTT on external mic

I noticed that when an external mic is connected the radio will not tx using mic PTT on a busy channel/active repeater.
BCL set to OFF.
The PTT on the radio will tx the radio on a busy channel with external mic connected.
The PTT on external mic will tx radio on inactive channels.
I have tried multiple external mics, all with the same result.
Thank you very much for all your hard work
James   MM6WER

There is something strange going on with the QS radios when it comes to using an external microphone. I'm told that if the original QS microphone that comes with some radios works OK, but when trying to use other mics like baofeng etc things get strange with the radio. I don't yet know why.

Thanks for your reply


Linux support

Great package -- I've been using it for a while.  It would be really useful to have official Linux support and provide a package.

Hi @adamrowell,
I have been working on the port to Swift 3 and it is already compilable on Linux. I just pushed the branch swift-3 if you'd like to try. Unfortunately, libdispatch is not yet available on Linux so we don't have full functionality yet - there is some dummy code in Threading.swift at the moment.
Let's hope libdispatch will be part of first Swift 3 developer preview release that's coming this week (today?).


Trilateration Between Phones

Hey Darryn,
I'm hoping to adopt this same technology to use on an app which would calculate short range (<1000 m) map of multiple android phones. Do you think that this program could be adopted to work with multiple android phones, each with only rough estimates of where their individual locations are, so that as a group they could get fairly accurate information on where they are with respect to each other? Do you think I could do this with as little as three android devices?

Hi @connorjoleary , you would still need access points that supported WiFi-RTT, you couldn't do it with just the mobile devices.


Set Uarte log levels to trace

I noticed lots of logging which really slows things down and is not useful outside of a debugging context, hence set to trace.

bors r+


Always add model disputePrefix

Moved from: https://bitbucket.org/echo_rm/openapi-merge-cli/issues/15/add-model-prefix-always
Initial Post
Hey mate
Would it be possible to use the disputePrefix ALWAYS for the Models and Components?
Maybe by adding a further configOption: alwaysUseDisputePrefix
That would really fit my need.
Thanks
Robert Response
Everything is possible but can you expand a bit more on why you want this feature? 🙂
For example, why not just put in the prefixes in the original schema file? Also, do you still expect deduplication to occur if you use a fixed prefix?
Daniel Response
Thanks for your Answer!
I am mergin a couple of API-Specs together and serving it in one place, at my gateway api.
So i have api-doc A which has Models like (Device, Measurement, Customer, Contact), with disputePrefix A
And i have api-doc B which has Modles like (Weather, Measurement, Customer, Location) with disputePrefix B
Obviously Measurement and Customer will conflict.
Device, Weather and Location will not conflict.
Having that i merge my Api-doc and create via codegen ONE client. There now i Have These Models:
Device, AMeasurement, BMeasurement, ACustomer, BCustomer, Weather, Contact, Location
So far so good. i implement and work with the models on my client.
BUT now i add a third api-doc to my Gateway-api-doc:
api-doc C which has Models like (Contact) with disputePrefix C
After the merge i end UP with my former Contact Model from Api-Doc A is renamed to AContact and is breaking my code in the client. (Because the ModelName changed, because API-doc C has also a Model called Contact → resolving into CContact).
In order to prevent those changes i would like to Prefix each Model from the very beginning, not only in conflict. This will prevent a rename of the model in the future in case of conflict.
So my answer to Question 1)
Because i do not have the power to change the Schema-Files in the server, nor do i want to “parse” and “prefix” models myself in the json-api-doc
To Question 2)
If i use a fixed prefix i would suppose no deduplication is necessary anymore, except the case i would give two input-sources the same prefix, but then… well. then it’s my fault 😉
Could I clarify?
Daniel follow up
hello Robert
Any news on this?
Kind regards
Daniel

This has been fixed in:

openapi-merge: 1.3.0
openapi-merge-cli: 1.3.0

Please read the documentation for more details: https://github.com/robertmassaioli/openapi-merge/wiki/configuration-definitions-dispute


Invalid get index 'interactive_object_detected' (on base: 'Nil')

Cogito and Godot Engine Version:
Cogito 9f4be78
Godot 4.2.1
Description:
When first instantiating CogitoPlayer prefab and Player_HUD as well as PauseMenu, setting their references, but have the node order so that the player comes below the UI nodes, the scene will crash with the error message "Invalid get index 'interactive_object_detected' (on base: 'Nil')".
Reproduction steps:

Make sure COGITO folder is present in project.
Create new 3D scene.
Instantiate player prefab.
Instantiate Player_HUD node.
Instantiate PauseMenu.
Make sure in the node order, the Player is below the UI nodes.
Start game.

Expected behavior:
The game should start, the reference to player_interaction_component should not get lost.

I tried for hours to compare DEMO_Lobby and my simple test scene bit for bit, but I can't find the difference that makes my scene crash (see description above) and the DEMO level not. Please enlighten me! D:

Can you confirm that you set the references to the HUD and PauseMenu in the Player node?
See also this video for reference where I do a quick scene setup from scratch: https://www.youtube.com/watch?v=KXcOj4LhOrY

My scene is set up almost exactly like in the video, only difference is some additional meshes (e.g. StaticBody+Mesh+Collider instead of CSGBox) and some World Environment settings concerning the skybox that shouldn't touch Cogito. For the sake of it I recreated the scene exactly as in the video, and it runs! Then I deleted PauseMenu, Player_HUD and player completely and added them new. My scene now also runs.
I cannot tell what difference there is between the ones I added yesterday and today - all references are set in both cases.
I guess it just goes to show that you shouldn't try to force progress if you are tired.

A minute after closing the bug I discovered what the problem is! Loading order!
Place PauseMenu and Player_HUD above the CogitoPlayer and the problem is perfectly reproducable. :)

Oh yeah, sorry, I always forget to mention that the nodes need to be in this order.
The Cogito documentation mentions it, but it's still not great.
We're discussing how to improve the whole Player tscn setup in this thread #179 , so hopefully this will improve in the near future.

Just a quick update, the new commit https://github.com/Phazorknight/Cogito/commit/64c020ddc3780780f8b8928cf66fb94266d3bb63 now unifies this all into a single Player.tscn .
Going to close this issue for now.


Fix cmake warnings

Thanks @gengjiawen, closing in favor of https://github.com/codecov/example-cpp11-cmake/pull/15


Limitation: generate option in MakeResourceCommand only works on models in default App\Models directory

Package
filament/filament
Package Version
v2.0.0
Laravel Version
v9.2
Livewire Version
v2.10.4
PHP Version
PHP 8.1.3
Bug description
running php artisan make:filament-resource User --generate works only if User is in app\Model\User
Currently it generates an empty table and form
Steps to reproduce
running php artisan make:filament-resource User --generate works only if User is in app\Model\User
Currently it generates an empty table and form
Relevant log output
No response

Yeah, otherwise how would we find the path to the model to retrieve the table name? We follow Laravel conventions, if you're not using those then you're on your own and will have to do more work like altering generated files yourself. Sorry about that.

Ignore previous message, I just saw the PR. I will check it out, if the solution you propose does not introduce much extra complexity to the codebase then I'll consider merging. Thank you.


Add missing comma in string list

in python, a missing comma within a string list leads to an implicit string concatenation, which is often unintended, leading to bugs. This change adds a comma which was clearly unintentionally missing.

Err, my bad, closing and opening one on bitbucket

No worries ;-)


Does't launch anymore, can't find monitor?

Running polybar for a long time, there was an update recently on gentoo and Xorg got updated, everything else is working fine but polybar, for some reason it refuses to launch. Nothing else was changed (polybar config or something like that)
It says this :
warn: No monitor specified, using "VGA1"
Some info :
$ polybar --list-monitors
VGA1: 1920x1080+0+0

$ xrandr -q | grep " connected" | cut -d ' ' -f1
VGA1

polybar 3.1.0

Features: +alsa +curl +i3 -mpd +network +pulseaudio

X extensions: +randr (+monitors) -render -damage -sync -composite +xkb +xrm +xcursor

Build type: Gentoo
Compiler: /usr/bin/x86_64-pc-linux-gnu-g++
Compiler flags: -march=native -O2 -pipe -Wall -Wextra -Werror -Wno-noexcept-type -O2 -pedantic -pedantic-errors
Linker flags: -Wl,-O1 -Wl,--as-needed

Any hints how to solve this ?

Looked at dmesg and I saw error :
[  +0.122938] polybar[2062]: segfault at 10 ip 00007f5e5e1fffd0 sp 00007f5e377f5168 error 4 in libfontconfig.so.1.11.1[7f5e5e1e0000+40000]
So I tried with default config and it worked, for some reason it doesn't work if I change the font and include patched fonts (fontawesome etc.), anyway that's another issue I'll look at later, this one is solved.


Internal time structure changed

The internal time structure for events is moved from a string type YYYY-MM-DD to a float number representing the time in years, and the fractions the days in the year. The native support for dates in python is limited, and with pandas precise to a nanosecond due to 64 bit, but not before 1699 CE and therefore not suitable. Astronomical data calculation seems to be an overcomplicated solution.

Much nicer colors, better spacing and readability of details. Great progress!


Too many requests when rendered conditionally

When a component with query is rendered conditionally, gqty makes too many (in my case 5) requests

query.tsx
import { useQuery } from '../utils/client'
import Test from './test'

export default function Example() {
  const query = useQuery()

  return (
    <>

User: {query.user?.name}

        { query.user?.name?.includes('Max') ? <Test /> : 'Not Mish' }

    </>
  )
}

test.tsx
'use client';

import { useQuery } from '../utils/client'

export default function Example() {
  const query = useQuery()

  return (
    <>

Age: {query.user?.age}

    </>
  )
}

There will be a new selection cache covering conditional renders, I am experimenting with a few extreme cases to make sure it neither over-fetches nor under-fetches.

No under-fetches
When it is out, you should see the second fetch including selections from the first one, even if the 2nd render no longer needs it. (At most N fetches, for N rendering conditions.)

No over-fetches
But it will forget all previous selections when a new render is triggered by user events, e.g. A button click changes a state, it in turn changes some query inputs, the last input should not be fetched again.

Does it make sense?

Hey y'all — completely uninformed speculation here, but I wanted to sketch out a possible solution.
From your description, it sounds like you are not targeting initial renders. Is that so? (I don't think a selection cache is a great solution for initial renders of pages, especially when the page is customized to the user (e.g. /user/:id). IMO, that is probably the most important time to avoid waterfalls.)
Okay, here goes. Feel free to tell me I'm wrong.
Things I think are true:

The gist of the problem is that the component is rendered with fake data (e.g. name: 'asdfasdf'), but there is conditional logic that is opaque to gqty (e.g. if (name === 'gqty'))
If the field is optional or a boolean, you might have some luck re-rendering to detect data dependencies, but not for a number or string.
Overfetching is better than underfetching, at least in some cases. (e.g. consider Relay's advice for mutations: just refetch everything that could have changed, as inconsistent state due to underfetching is worse than overfetching.) Besides, defer can optionally be used to avoid paying the cost of overfetching.

Okay, so the gist is that I think that any conditional branch that you want to be sure gets exercised has to go through a hook that qgty provides. This makes the condition visible to gqty, and means that gqty can re-render the component and exercise all branches you care about.
An example that doesn't work, because age > 65 is opaque to gqty:
function AgeDisplay() {
  const { me: { age } } = useQuery();
  return <>

You are {age} years old

    { age > 65 ? <AARPCard /> : <YouthCard /> } { /* AARPCard & YouthCard each fetch more data */ }
   </>
}

Can be made to work as follows:
function AgeDisplay() {
  const { me: { age } } = useQuery();
  const isOld = useGqtyBooleanConditional(() => age > 65); // type: boolean
  return <>

You are {age} years old

    { isOld ? <AARPCard /> : <YouthCard /> }
   </>
}

Now, when gqty renders the component, it notices that we're calling useGqtyBooleanConditional, and then knows to re-render twice. Once returning true and once returning false.

Additional thoughts:

can this be turned into a @include statement? This is unclear to me.
I think everything that is fetched only in a branch can be given @defer. This means that for a given user whose age > 65, the query will not be blocked on YouthCard and vice versa, even though that data is eventually fetched.
This is entirely opt-in. Users may be happy with waterfalls and not need this.

@rbalicki2 tl;dr You may pass prepare function to useQuery hook to do exactly that.
The issue boils down to initial developments where fields may change rapidly and not know beforehand, and that's where GQty focus the most. That means for each conditional code path, there will be 2 renders and 1 fetch.
With the prepare option, GQty grabs selection from there instead. This way, subsequent renders never trigger further fetches.
When using without prepare, null values and empty arrays returned from server essentially stop the proxy from receiving child selections. That's when the selection cache comes into play.


Support URLs without the leading http:// or https://

If you go to https://via3.hypothes.is/ and type in "example.com" or "pdf995.com/samples/pdf.pdf" (with no leading http:// or https://) it'll crash. While invalid URLs do need to be handled with an error message (without crashing) (see https://github.com/hypothesis/py-proxy/issues/23, https://github.com/hypothesis/py-proxy/issues/24, and https://github.com/hypothesis/py-proxy/issues/25), URLs that are valid but just missing the leading http:// or https:// should be able to be handled correctly.
Legacy Via can handle these:

https://via.hypothes.is/example.com
https://via.hypothes.is/pdf995.com/samples/pdf.pdf

I don't know what legacy Via does to handle these (testing it or looking in its source code should tell you) but it probably prepends either http:// or https:// if the given URL doesn't already start with either. https:// is probably the better default.
We probably should not prepend "www.".

Not that this matters too gravely, but this is expected behaviour right now rather than a bug. It's not good behavior, so we'd definitely expect better if we were sending users to this page.


free(): corrupted unsorted chunks

Hey Alex,
I have a super simple scene which crashes when I click the render button.
Here is the stack trace:
700, child_tidptr=0x7f8a80c8b9d0) = 11219
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f89d13ce000
mprotect(0x7f89d13cf000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7f89d1bcdfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f89d1bce9d0, tls=0x7f89d1bce700, child_tidptr=0x7f89d1bce9d0) = 11220
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f89d0bcd000
mprotect(0x7f89d0bce000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0x7f89d13ccfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f89d13cd9d0, tls=0x7f89d13cd700, child_tidptr=0x7f89d13cd9d0) = 11221
prlimit64(0, RLIMIT_NOFILE, NULL, {rlim_cur=1024, rlim_max=41024}) = 0
openat(AT_FDCWD, "/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 31
read(31, "0-15\n", 8192)                = 5
close(31)                               = 0
futex(0x7f8aace70eac, FUTEX_WAKE, 1)    = 1
futex(0x7f8aace7102c, FUTEX_WAKE, 1)    = 1
sched_yield()                           = 0
futex(0x7f8aace7102c, FUTEX_WAKE, 1)    = 0
sched_yield()                           = 0
sched_yield()                           = 0
sched_yield()                           = 0
futex(0x7f8aace70fac, FUTEX_WAKE, 1)    = 1
futex(0x7f8aace710ac, FUTEX_WAKE, 1)    = 1
pread64(30, "/\0\0\0\0\0\0\0", 8, 2121144) = 8
pread64(30, "\vE\212<w\342\10\354_\203\3057\3318\224", 16, 2121167) = 16
pread64(30, " \0\0\0\0\0\0\0", 8, 2121038) = 8
pread64(30, "\301\260+\332\242?\354\224\177\f\21WO\263\372\211", 16, 2121046) = 16
free(): corrupted unsorted chunks
+++ killed by SIGABRT (core dumped) +++
Aborted (core dumped)

Hey Edmond,
Yeah that doesn't tell me much to help fix. Have you tried a MeshType node to re-calculate the normals on the mesh? That's the major bug that I know for now until I figure out a way to fix what's up.

Ok It’s a sphere node inside gaffer which I am rendering lemme check that .. is that a requirement for any mesh or was that mesh type for fixing certain cases? I’ll have a go later today

You might need to give me a .gfr because it seems to work fine here, with the latest release from me.

Going to close this as things have changed/stabilised greatly since this build.


RFC: Move the Missing Semester Later in the Curriculum

Problem:
The Missing Semester is a challenging course early in the curriculum.
Duration:
2020-09-10
Background:
The Missing Semester is meant to teach students how to use a number of tools of computer science. These include the terminal, git, and vim.
However, numerous students have given feedback that the assignments are quite challenging. Examples can be found in this issue. The course also occurs quite early in the curriculum.
In addition, the courses immediately after this one do not leverage the lessons learned. How to Code is taught entirely within Dr. Racket. Students will most benefit from exposure to command line environments before studying operating systems and networks.
Proposal:
Move The Missing Semester immediately before Core Systems.
Alternatives:

Students could be advised to study different sections of the course at different times in the curriculum.
The course could remain in place.

I support the proposal.

I also support the proposal.

This sounds like a great solution!

Great! I'm doing this course right now and it really has a lot of content, tools, techniques and concepts. Once I will spend the next few months at programming/math classes, probably I will forgot 70% of the content and I will need to do it all over again.
So, I like the idea of taking this class later in the curriculum.

I completed the 4th lesson now and I strongly agree that this course should come later in the curriculum.

It sounds like cs50 has its own IDE. And I know that Nand2Tetris supplies its own software. Perhaps it'd be better to fit this in after those classes but before operating systems. (I don't know networking, so can't comment on it).

I have been using bash and vim for a really long time. Where I did my PhD, the program administrators  required that everyone in their first year of PhD (irrespective of degree enrolled), do a 2-day software carpentry training course that covered shell, automation and text editing at a command line.  I am not a CS major, but I still picked this up rather quickly, and was using them daily in my research.
I don't know if it is so hard that it needs to be deliberately moved beyond various CS subjects. I find algorithms, programming etc hard relative to some basic filesystem moves etc at the command line.

I agree that moving it later is a better option, but not because it is challenging. I agree with @cauequeiroz in that if you don't use these tools right away, you will probably forget them. Might as well teach them either immediately before or in parallel with classes that will take advantage of these skills.

My main concern with moving it later is with things that are easy to understand but require a lot of time to get comfortable with, like Vim. If you leave it too late, the projects you're gonna be working on are going to feel extra hard if you're just learning Vim, while if you begin it early you may have a bit of an easier time since the courses are not on the same level.
I myself haven't reached that far into the program so I can't really say for sure though.

I am in the middle of the course and yes there are a lot of tools introduced but for me, this seems like a good choice to give the students the knowledge about the existence of these tools so that they start using it. I've been using git and terminal right from the beginning of the curriculum and also created a personal repository just to test different topics of git.
I would say to take this course as an exploration of what's possible and come back to it when you need it.

The course is all over the place in the content coverage (and hence, the "missing semester" title, I get it).
I strongly believe that one shouldn't proceed too far into the currciulum without knowing some form of version control. This can be an invaluable tool for incrementally working on homework assignments. (eg. can progressively make small commits towards attaining an optimal solution to algorithm homeworks, without worrying too much about messing up/destroying currently working code).
I think a strong substitute in the early stages are the lessons from Software Carpentry , especially git lesson  (and the Unix Shell lesson).
Software Carpentry is a non-profit organisation founded nearly 10 years ago by a professor at Univ of Washington, and they run regular 2-day FREE workshops all over the world, where these lessons are covered.
The material itself is licensed CC-BY.

Its placed too early in the curriculum by being in Intro CS. It has pretty useful knowledge, but I did it later in the curriculum because I had already started OSSU when you guys suggested it, so it made a better impact on me because of the stage I was in the curriculum than it will do in a noob that has not even done CS50 yet. So to make a real impact I think it should definitely be moved to core, maybe just after CS50 as I suggest in my draft of comment-660886018

Core Theory
Knowledge Areas: SDF - Software Development Fundamentals PL - Programming Languages DS - Discrete Structures AL - Algorithms and Complexity CN - Computational Science

KA
Course
Hrs
Optional Support
Prerequisites

SDF
How to Code Part 1 Part 2
117
Book, Basics, khan
none

SDF
Intro to CS - CS50
132
I, II, III, IV
none

SDF
CS Missing Semester
24
IT Support
-

PL
PL Part A Part B Part C
66
Java, Book 1, Book 2
SDF , Instructor's

DS
Introduction to Logic
60
Effective, Thinking
Set Theory

DS
Mathematics for CS
65
Discrete Math
Calculus 1A 1B 1C

AL
Algorithms
96
Khan, UCSD, Algo, freecodecamp, geeksforgeeks, Princeton 1 2, MIT 1 2
SDF PL DS

CN
Theory of Computation, Videos
80
Princeton, Intro Book
DS AL

I think the proposal makes a lot of sense. No need to burden the students with topics that will not be useful or relevant right away. It would be better to do the courses later as proposed, where the student might get practical application from them soon after completion.

In this case (or moving it to a later stage), we need to insert the software carpentry's phenomenal git course, which can help to version control their homeworks (for all courses).

Close of the Comment Period
Findings:
The majority of contributors agree with the reasoning for moving The Missing Semester.
Conclusion
The Missing Semester will be placed before Core Systems.


remove Pipfile.lock

#430
https://github.com/taoufik07/responder/pull/430#issuecomment-613516875

We have to specify the version in Pipfile...

typesystem's pre-release is downloaded because pipenv's allow_prereleases is true.


Avoid warnings

Copyright scan failure
Commit: b28d332db87f262560fa1519ed3a6d36ee339a83
Report detail: https://gist.github.com/rdkcmf-jenkins/d24e8b896e706d1915abebd629a74edb

Copyright scan failure
Commit: 1d7c9e0f6e61454fdc4cb861715a18274233d6ad
Report detail: https://gist.github.com/rdkcmf-jenkins/e976da05d895975640b7b0230f91fcdf


Added "avg_understood" field, and DMP file upload

Changes are reflected in the review detail sidebar. Also fixed a bug where supervisors were not allowed to compare items. Migrations and translations included.

Just realised I didn't change the text on the DMP page yet, will add that before merge.


#457 - inactive user cleanup

Should close #457.
Added gray background color for blocked users if user wanna see them on index. Added on indexes checkbox for switching visibility of inactive users.
Preview:

As an admin, when I go to page with equipment I see error:

On CV page, inactive users should be marked somehow - like gray background or so
The same thing on page benefits-reports/1
ON users page, inactive users have red background but on other pages gray. Can we unify it somehow?

1, 2, 3, 4 fixed


Cleanup

(typescript) Error: /home/runner/work/verifiable-data/verifiable-data/packages/vc.js/src/universal/credential/verify.ts(24,7): semantic error TS2345: Argument of type '{ credential: string | VerifiableCredential; suite: Suite | Suite[]; documentLoader: DocumentLoader; checkStatus: ((args: any) => Promise<...>) | undefined; compactProof: boolean | undefined; expansionMap: boolean | undefined; }' is not assignable to parameter of type '{ credential: any; suite: any; checkStatus?: any; documentLoader: any; expansionMap?: boolean | undefined; }'.

Does this need to be addressed?

The package locks got bumped to an npm version that was not working with node 14.


Experimental implementation of the On Demand API.

SIMDJSON introduced On Demand API as a default API recently.
This is an experiment that employs this API in the Python/Cython.
Following issues has been identified so far:

[ ] Once the value is read, the subsequent (naive) access fails (do we need rewind? https://github.com/simdjson/simdjson/issues/1528 )
[ ] JSON Pointer is missing: https://github.com/simdjson/simdjson/issues/1427

Speed is indeed impressive:
----------------------------------------------------------------
# 'perftest/jsonexamples/test.json' 2397 bytes
----------------------------------------------------------------
* cysimdjson (on-demand)   1016803.45 EPS (  1.00)  2437.28 MB/s
* pysimdjson parse          341314.68 EPS (  2.98)   818.13 MB/s
* orjson loads               61601.40 EPS ( 16.51)   147.66 MB/s
* python json loads          40521.16 EPS ( 25.09)    97.13 MB/s
----------------------------------------------------------------

cc @jkeiser

@lemire - I have one question that I cannot crack:
Does On Demand parser assume that a structure of the JSON to be parsed is known in advance?
Thanks.

Does On Demand parser assume that a structure of the JSON to be parsed is known in advance?

It does not.
However, if you do know the schema, then you can benefit for that knowledge with on demand.

@ateska

Once the value is read, the subsequent (naive) access fails

Let me clarify. The idea is that you (the user) is supposed to take the value and do something with it... Even with the rewind functionality, it would still not be right to rewind whenever you want to access a value.
So if you have [1,2,3] and you parse it... you get 1, then 2... Ok, you need the 1 again? Well, in the spirit of On Demand, the expectation is that you stored the 1 somewhere.
cc @jkeiser

@lemire @jkeiser - ok, thanks for clarification. It more or less matches my "mental model".
The problematic bit in Python is that if you want to store the value in the Python-native way, you will have to construct that native type and that's exactly what is slow ... and pysimdjon/cysimdjson takes the advantage of delaying that conversion as much as possible; this is essential for the high performance of the binding.
So my current thinking is that some kind of "intermediate" storage on C++ level will be needed for On-Demand API. And the question is how different is this from the "previous" API.

The problematic bit in Python is that if you want to store the value in the Python-native way, you will have to construct that native type and that's exactly what is slow ... and pysimdjon/cysimdjson takes the advantage of delaying that conversion as much as possible; this is essential for the high performance of the binding. So my current thinking is that some kind of "intermediate" storage on C++ level will be needed for On-Demand API. And the question is how different is this from the "previous" API.

Right. The python-C++ interface is a nasty challenge. I am aware. :-)

Note that the on demand interface has matured considerably since...

Unfortunately the gotcha still exists even with the matured API - it's the same reason pysimdjson has avoided it so far. Given the overwhelming overhead of object construction, the only benefit simdjson wrappers offer to Python over some easier-to-integrate options (like yyjson) is the DOM model for delayed object creation.

@TkTech Granted, but I wanted to stress that many of the earlier comments in this issue are obsolete.

@jkeiser that would be an interesting approach and it would be nice functionality to have for other things (cases when the end user knows they will need the entire document at some point) but even the cost of creating that initial array is certainly higher than sparse access through the DOM model. Creating the strings in the array is extremely expensive because of how Python is internally storing the strings, requiring a copy.

I think that @jkeiser's proposal is worth investigating and it is on my todo. Whether it works out is a research question, but it is practical in the sense that it does not require 'years' of difficult implementation. Although, I must say, there are difficulties.
Related discussion: https://github.com/simdjson/simdjson/discussions/1912
Note that it applies to JavaScript runtimes as well... https://github.com/oven-sh/bun/issues/2570

I'm not sure what @ateska's plans are for this repo (I feel like I'm hijacking his issue :))  but on the pysimdjson side ideally we'd get something like...
from_buffer(const char *buffer, uint64_t **output, int *bytes_read, int *indices_written, malloc_func_t, realloc_func_t)

... which would be very easy to integrate and allow us to do proper memory tracking and re-use.

Let me quote the results of the recent JavaScript efforts (@Jarred-Sumner)...

Looks like using SIMDJSON is faster when the input is all primitives, but the cost of creating identifiers and converting strings means its slower than using native JSON.parse for objects with keys or strings longer than 1 character.

In JSC's case, strings must be either latin1 or UTF-16. If the programming language internally supports UTF-8 strings it may be cheaper.


Refactor sort() builtin to support predicates

Expr support two sort function right now: sort and sortBy.

sort for []int or []string array
sortBy for []map or []strict.

The sortBy takes string as a name of the field to sort. It will be cool to add support for predictates in sort.
array | sort(.Date, 'desc')

But from a readbility point of view sortBy looks better. Let's keep both sort functions.

Done!
Now sortBy supports predicated: events | sortBy(.Date)


Can't use RxSwift 3.6.1

Can't use latest RxSwift, when installing with cocoapods. Only version 3.5.0 is supported now
Installing RxSwift 3.5.0 (was 3.6.1)

Hey @AYastrebov
I have a PR out to fix this. Any way you can point your Podfile to the Podspec of the specific branch to see if it resolves it? Thanks !

Thanks, @freak4pc
pod 'RxViewModel', :git => 'https://github.com/RxSwiftCommunity/RxViewModel.git', :branch => 'fix/loosen-hard-dependency' fixed this issue

Cool. I'll merge this but will still have to wait for @esttorhe to publish a new Spec along with the RxViewModel 5.0.0 release

Fixed via #55


Keep arg as a str

Hello,
I have a query field: .../?search=foo. This query field must always be a string, however when I do .../?search=1 the '1' is casted to int, which then Marshmallow dislikes because the field is set as a Str. If I set the field as Raw everything works but the value is then returned to str.
Is there a way to tell webargs to keep it as a str?
Btw, thanks for such amazing library!

Is the web framework you're using casting to an int when you do ?search=1?


Hi Eusonlito

I was wondering if it is possible to make some sort of upload function in for examble csv format to import passwords. It is quite intense to add current passwords manually in.

Is not easy because every APP has a type with different fields, multiple teams, tags, etc... Maybe is best option an API endpoint to create APPs.

This will only be for a specific type email


domain-specific TARGET_DOMAIN?

I have two zones in Cloudflare, so 2 domains and separate DNS settings.
In traefik I specify dedicated subdomains for each domain.
cfcompanion's config allows to specifiy several domains DOMAIN1, DOMAIN2...
However, the TARGET_DOMAIN seems to be used for all domains specified.
All CNAME records are created in that TARGET_DOMAIN.
So in my domain1.com DNS settings I get
CNAME    mysubdomain.domain2.com       domain1.com
CNAME    othersubdomain                domain1.com

Instead of one CNAME in domain1.com and the other in domain2.com
Bug ?  Or am I not getting something?

My workaround is to create two containers - one for each domain/zone

I'd have to think about this but it would likely involve a massive rewrite of the code. I myself have a similar solution with 9 zone's. How I solve it is by creating a A record to the hostname of the server itself.

I think I managed to implement this in https://github.com/tiredofit/docker-traefik-cloudflare-companion/pull/30.
It seem to work fine for me at least, using it right now together with the changes from https://github.com/tiredofit/docker-traefik-cloudflare-companion/pull/15.

This should be fixed now that #30 is merged

Tagged as tiredofit/traefik-cloudflare-companion:6.2.0  - Many thanks @mbjurstrom


Add support for Promises

Simple change, but seems to handle the basics correctly.
Still need to decide what rejections should do. Currently they do nothing, should they could clear the part? Right now a template author realistically would have to explicitly handle rejections, which might be good.

I like the explicit handling of rejections. If not caught, they should produce errors in the console

@TimvdLippe VMs should be able to give the unhandled rejection warning on the console. An async stack trace should point devs directly to the expression that yielded the promise.


Investigate moving over to GitHub Actions

@chrisbanes is currently attempting this with Tivi with some success I believe
https://github.com/chrisbanes/tivi/pull/506


Python requirements : manage  nested requirements

Hello,
It could be nice to manage nested requirements, for example :
base.txt
Django==4.1.7

production.txt:
-r ./base.txt
sentry-sdk==1.15.0

Then I would call
osv-scanner --config=/Users/pmind/Projects/osv-scanner.toml --lockfile=requirements.txt:requirements/production.txt

And osv-scanner would read production + base as it would be only one file.

Thank you guys :).


Update requirements build targets

Add documentation that NuGet 2.5 or later is required for including MSBuild props and targets in a package, as per the release notes.

https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package

:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/create-packages/Creating-a-Package.md
:warning:Warning

Details

docs/create-packages/Creating-a-Package.md

Line 348: [Warning] Invalid file link:(~/release-notes/nuget-2.5#automatic-import-of-msbuild-targets-and-props-files).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/create-packages/Creating-a-Package.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

/cc @kraigb

Thanks for the contributions!


Mock CAVEclient for testing

Adding a small submodule caveclient.tools.testing that makes it much easier to mock CAVEclients for testing.

CAVEclientMock lets you specify which services you anticipate loading, can take a datastack or use a only global-only version, can select what versions of each service you want to test against, specify api version availability, set materialization versions, etc. In general, CAVEclient initialization options are mocked out.

CAVEclient conftest.py was altered to use this tooling and several small tests were added to use these features.

This caught one or two bugs/issues thanks to these new tests.

Note on the bugs and issues:

Global-only CAVEClient initialization was ignoring server_version because it was trying to use the datastack-to-server map when a datastack was not provided. This check was moved to happen only if the condition that a datastack is specified.
l2cache.has_cache() was always checking the pcg tables anew, rather than doing it once on initialization. Not a huge deal, but it adds latency and also made mocking a pain since it would send a new request through the pcg client with every l2 cache request. Now the pcg-to-l2cache table mapping is saved once retrieved the first time.
There was no way to tell caveclient to not try to save a synchronized save file for the local server. I realized that this is actually a hazard, because it will save your token to a file automatically and silently without user permission. I changed this to require an explicit call to a new function client.auth.write_local_server_token().

On reflection, I dont' like the implementation in the third bullet point. Will move that feature to part of the existing save_token function

Added a parameter local_server to the save_token function which will also save the token to a datastack local server specific file, if a local server is set. Defaults to true, which will effectively save two files with a token for the price of one, making it much more convenient to e.g. use cloudvolume by default to get access to segmentation.


Should not compile the two files if -DWITH_AVX=OFF.

If cmake -DWITH_AVX=OFF during configuration, should not compile the file src/hl_math.cc and src/hl_avx_functions.cc.

In -DWITH_AVX=OFF, this paddle_cuda library will still be compiled with -mavx and use avx instructions in some methods. But these methods won't be used in runtime.
Because the header use __AVX__ macro to select methods that actually used.

Yes, I see. In -DWITH_AVX=OFF, src/hl_math.cc and src/hl_avx_functions.cc will be compiled with -mavx but it will not be used in runtime because of the macro define in include/hl_functions.h. So it will cause some confusion. And if the gcc did not support -mavx, it will cause some issues.


in-memory-cache support for chrome branch

It will be great if we could get the in-memory cache support for chrome branch. This feature is said to be coming soon.
P.S. Can anyone tell me an approximate time for this feature to release?

Sorry we haven't moved that over yet. We'll get that added sometime soon.


optionally cap the beginning and end of the activity

As things stand, the appearance of the bar isn't always what I want.

I would like to be able to define the "caps" of the bar to be one of:

invisible (beginning, end, both)
arrowhead (beginning, end, both)

Nice, love this idea.


preliminary debian packaging

Since evmjit underlies ethereum-cpp and since there is an effort to try to get ethereum-cpp into Debian GNU/Linux it would be useful to have the files required to be a debian project synced with this repository. This as a side effect would also help get ethereum/evmjit (and software depended upon it) into Ubuntu, Mint, Tails, Devuan, and dozens of other distributions both current and future if successful. On the Debian side, this effort is tracked in the following Request for Package (RFP): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=859371
I have made a fork and added what seems to be the minimum necessary changes to actually be a Debian package, though since I am not actually a DM/DD/maintainer the name will eventually have to be changed by whoever with the actual credentials required to be a maintainer the Debian project chooses to be the maintainer, but it's a first attempt anyway. It does build and allows for evmjit
to be installed on a Debian GNU/Linux system under a package name libevmjit (since it seems to be have mostly like a library(?)).

This will only make sense if evmjit is compiled as a shared library and support for that in cpp-ethereum is enabled: https://github.com/ethereum/cpp-ethereum/pull/4891


Improve the style of the import tests

This PR improves our import tests to be more consistent with the style of our other tests (use of test suites).
It also checks for errors directly rather than assigning to err first, and it enforces that the calls to the row iterator return the same values.

Part of the work for #561.


Eigen Incredible Squaring Blueprint Integration Test

Summary
Adds full test for the Eigen Incredible Squaring Blueprint, Replaces #304, rebased to Main,

This PR is almost ready. Just the following left:

Fix: submitting job result on-chain
Finalize Test for running in CI

Status update @Tjemmmic ?

Status update @Tjemmmic ?

It's close, I'm trying to get it wrapped up today. I am currently debugging BLS aggregation. Then I just need to clean up before merge


storageClient.upload_file(fileName, extName, metas) faild

storageClient.upload_file(fileName, extName, metas) ，the  [ .upload_file ] always cant use, who can know why ?

i once meet with this kind. my problem is using the wrong NameValuePair quote


Remove atty dependency

Before opening, please confirm:

[X] I have searched for duplicate or closed issues and discussions.
[X] I have read the guide for submitting bug reports.
[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.

Bug Category
Other
Describe the bug
Our (transitive, through criterion) atty dependency is outdated. The version used has a security vulnerability. We aren't exposed to it but once a new version of criterion is released we should upgrade so we don't have the transitive atty dependency.
Expected behavior
No response
Reproduction steps
No response
Code Snippet
No response
Log output
No response
Additional configuration
No response
Operating  System
No response
Additional information and screenshots
No response

For reference https://github.com/bheisler/criterion.rs/pull/628 updated the dependency in criterion. Comments by a maintainer at the end of that thread indicate that we can expect a release on a reasonable timeline.


Uncaught Error: ioctl(2) failed.

[Enter steps to reproduce below:]

Turn on "Auto Hide Menu Bar" in the core settings
Press Alt

Atom Version: 0.187.0
System: linux 3.13.0-45-generic
Thrown From: Atom Core
Stack Trace
Uncaught Error: ioctl(2) failed.
At /home/bjorn/.atom/packages/term/node_modules/pty.js/lib/pty.js:331

Error: ioctl(2) failed.
  at Error (native)
  at Terminal.resize (/home/bjorn/.atom/packages/term/node_modules/pty.js/lib/pty.js:331:7)
  at TermView.resizeToPane (/home/bjorn/.atom/packages/term/lib/TermView.js:115:12)
  at delayed (/home/bjorn/.atom/packages/term/node_modules/debounce/index.js:19:14)

Commands
  4x -8:36.8 core:backspace (atom-text-editor.editor.mini)
  9x -8:33.5 core:confirm (atom-text-editor.editor.mini)
 14x -8:20.3 core:backspace (atom-text-editor.editor.mini)
  4x -8:14.9 core:confirm (atom-text-editor.editor.mini)
  6x -4:54.6 core:backspace (atom-text-editor.editor.mini)
  3x -4:47.6 core:confirm (atom-text-editor.editor.mini)
 32x -2:27.8 core:move-down (atom-text-editor.editor)
  9x -2:25.6 core:move-up (atom-text-editor.editor)
 18x -2:24.6 core:move-down (atom-text-editor.editor)
  3x -2:23.1 core:move-up (atom-text-editor.editor)
  2x -1:21.6 core:move-down (atom-text-editor#editor.fontSize.editor.mini)
  2x -1:20.9 core:move-right (atom-text-editor#editor.fontSize.editor.mini)

Config
{
  "core": {
    "disabledPackages": [
      "atom-terminal-panel",
      "terminal-panel",
      "terminal-status"
    ],
    "autoHideMenuBar": true
  },
  "editor": {
    "invisibles": {},
    "softWrap": true,
    "softWrapAtPreferredLineLength": true,
    "showIndentGuide": true
  }
}

Installed Packages
# User
language-cmake, v0.1.1
minimap, v4.6.0
term2, v0.9.4

# Dev
No dev packages

Please report this to the term2 package.

It seem like many, if not most atom plugins are now in various states of being unusable due to the deprecation of the previous API. I don' t have the time now to hunt down or even report all these bugs. I only reported this one because it went automatically. I'll wait until atom hits 1.0 and try again then, hopefully I'll be less disappointed then.

Deprecated APIs still work (I believe they just call the updated methods instead).  Bugs like these indicate that the package itself is doing something wrong, not because they're relying on deprecated methods (those get reported to the deprecation-cop repo).


number of sets with maximum bitwise OR

Description
number of sets with maximum bitwise OR
Domain
Competitive Programming
Type of Contribution
Addition, Refactoring, Enhancement, Documentation
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of LearnCPP.

Assign this to me please.

/assign


3-5 seconds delay on first switch

First i am thankful for your work and a otherwise seamless integration.
When i haven't toggled something in the last 1-2 minutes it takes up to 5 seconds until the light is turned on after the command in HA.
I tried to investigate the code but it is very hard to trace the long taking command.
Do you have an idea what the problem could be.

No idea comes to mind, I have never seen this issue myself. Is this always the case in your installation, or are there specific way to reproduce it?

it is always even after a fresh restart of HA i am running the latest version of both your component and HA but know no way on how to debug this.

Also the integration takes 50s to start:

The delay is the same with blinds.

I know the integration takes a long time to start, and that is due to how
the inner workings of the enet server. You will see a similar load time if
you logon to the enet server and start commissioning. The enet app is also
very slow to load.
Turning on/off or dimming lights from Home Assistant is more or less
instant in my setup, and I have not heard other complaints either. There
can be a few seconds delay if you change something using a light switch or
the enet app, and before that is reflected in home assistant. The events
generated from the server has a delay.
On Sun, Jul 2, 2023, 22:00 Konstantin @.***> wrote:

Also the integration takes 50s to start:
[image: grafik]
https://user-images.githubusercontent.com/69057532/250392773-2640d32b-58d2-4074-87b2-778fb83aa80e.png
The delay is the same with blinds.
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-1616774838,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARX6LGUVFUATDBDGJFXIN3XOHAOFANCNFSM6AAAAAAZUUFE4Y
.
You are receiving this because you commented.Message ID:
@.***>

Turning on/off or dimming lights from Home Assistant takes 3-5 seconds until the light turns on/off

What details could i provide to you.

I do not really have any idea about the reason for this. Do you experience
delays with any other integration I home assistant? Do you notice any
delays when controlling your lights from the enet app?
On Sun, Jul 2, 2023, 22:39 Konstantin @.***> wrote:

What details could i provide to you.
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-1616796241,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARX6LFKXD67TAOD35YJ55DXOHE5LANCNFSM6AAAAAAZUUFE4Y
.
You are receiving this because you commented.Message ID:
@.***>

I don't have a delay with any other integrations or the eNet app (besides first sync)

I think it is an eNET server issue.
I was trying different nodejs libs.
And I spotted one thing, that device (kind of) goes to sleep or so, no sure.
But if you, for a longer time, do not touch lights, yes first one takes longer, like 2 seconds to activate.
Afterwards it goes much faster.
It may be some initial slow connection issues or authentication or so I guess

But once in the app there is no delay

Because probably when you are inside an app - it is kind of initated/authed
On 2023-07-09, Sun at 21:02 Konstantin @.***> wrote:

But once in the app there is no delay
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-1627785482,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABEZS34ADRLEBQQUWLJWA3XPLW47ANCNFSM6AAAAAAZUUFE4Y
.
You are receiving this because you commented.Message ID:
@.***>

But in HA i don't have any delay with button presses on the remotes comming in the log

Hi, you can try to toggle a light using the API to try to seperate if the
issue is a delay on the enet server or if it is home assistant. If you send
med the debug information for the integration, I can guide you on how to do
that.
On Sun, Jul 9, 2023, 20:05 Konstantin @.***> wrote:

But in HA i don't have any delay with button presses on the remotes
comming in the log
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-1627786072,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARX6LDJPI4BSBQK6PHPWJ3XPLXHNANCNFSM6AAAAAAZUUFE4Y
.
You are receiving this because you commented.Message ID:
@.***>

Delayed on and fast off
2023-07-10 09:41:45.195 INFO (MainThread) [custom_components.enet.light] async_turn_on: (Light) {}
2023-07-10 09:41:45.195 INFO (MainThread) [custom_components.enet.aioenet] Light turn_on()
2023-07-10 09:41:45.195 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:47.512 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:48.614 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:49.286 INFO (MainThread) [custom_components.enet.light] async_turn_off: (Light) {}
2023-07-10 09:41:49.286 INFO (MainThread) [custom_components.enet.aioenet] Light turn_off()
2023-07-10 09:41:49.286 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:49.919 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents

Fast on and off right after the first one
2023-07-10 09:41:50.673 INFO (MainThread) [custom_components.enet.light] async_turn_on: (Light) {}
2023-07-10 09:41:50.673 INFO (MainThread) [custom_components.enet.aioenet] Light turn_on()
2023-07-10 09:41:50.673 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:51.386 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:52.153 INFO (MainThread) [custom_components.enet.light] async_turn_off: (Light) {}
2023-07-10 09:41:52.154 INFO (MainThread) [custom_components.enet.aioenet] Light turn_off()
2023-07-10 09:41:52.154 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:52.634 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:54.991 DEBUG (MainThread) [custom_components.enet] Updating value of ActuatorChannel (Name: DeckenlichtKind Type: CT_1F02 Value: 0) to 0
2023-07-10 09:41:54.994 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents

There seems to be no delay on the home assistant side in any of the cases.
The requests to callInputDeviceFunctionis the call towards the enet server.
If you download the diagnostic for the integration and send to me, I will
help you test it from the command line to further isolate the behaviour.
How long do you have to wait to experience the delay?
On Mon, Jul 10, 2023, 11:48 Konstantin @.***> wrote:

Delayed on and fast off
2023-07-10 09:41:45.195 INFO (MainThread) [custom_components.enet.light] async_turn_on: (Light) {}
2023-07-10 09:41:45.195 INFO (MainThread) [custom_components.enet.aioenet] Light turn_on()
2023-07-10 09:41:45.195 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:47.512 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:48.614 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:49.286 INFO (MainThread) [custom_components.enet.light] async_turn_off: (Light) {}
2023-07-10 09:41:49.286 INFO (MainThread) [custom_components.enet.aioenet] Light turn_off()
2023-07-10 09:41:49.286 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:49.919 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
Fast on and off right after the first one
2023-07-10 09:41:50.673 INFO (MainThread) [custom_components.enet.light] async_turn_on: (Light) {}
2023-07-10 09:41:50.673 INFO (MainThread) [custom_components.enet.aioenet] Light turn_on()
2023-07-10 09:41:50.673 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:51.386 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:52.153 INFO (MainThread) [custom_components.enet.light] async_turn_off: (Light) {}
2023-07-10 09:41:52.154 INFO (MainThread) [custom_components.enet.aioenet] Light turn_off()
2023-07-10 09:41:52.154 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization callInputDeviceFunction
2023-07-10 09:41:52.634 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
2023-07-10 09:41:54.991 DEBUG (MainThread) [custom_components.enet] Updating value of ActuatorChannel (Name: DeckenlichtKind Type: CT_1F02 Value: 0) to 0
2023-07-10 09:41:54.994 DEBUG (MainThread) [custom_components.enet.aioenet] Requesting https://<IP_ADDRESS>/jsonrpc/visualization requestEvents
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-1628610957,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARX6LADUZJ763JZSDUIMSTXPPFVPANCNFSM6AAAAAAZUUFE4Y
.
You are receiving this because you commented.Message ID:
@.***>

Send via E-Mail

Do you have found any idea what the problem could be

Unfortunately I have no idea what can cause your problem.

It still persists with the latest update. I deleted the integration and added it again.

How can I check what causes the second /jsonrpc/visualization requestEvents request?

I closed this issue as I have no idea what is causing it, and have not
heard from anyone else with similar issues.
/jsonrpc/visualization requestEvents is called in an infinite loop. Not
sure that I understand your question?
-Magnus
On Sun, 25 Aug 2024 at 17:55, Konstantin @.***> wrote:

How can I check what causes the second /jsonrpc/visualization
requestEvents request?
—
Reply to this email directly, view it on GitHub
https://github.com/mnordseth/enet-homeassistant/issues/18#issuecomment-2308904529,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AARX6LEDKFMVHINQHB4UB63ZTH46HAVCNFSM6AAAAABNA467OKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBYHEYDINJSHE
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

In the log it is only requested twice when I switch it the first time after that it is only called once. Is there a way to run it outside of HA to inspect it deeper? Can aioenet.py be run standalone?

Yes, clone the repo, and then
python  examples/run_cli.py server_uri username password

I have exactly the same Problem. The first action has a delay of 4-5 seconds, the next are much faster. It feels like that the connection to the eNet Server is closed After a short while and the reconnecting needs time To be established.

@mnordseth I am currently trying to test the problem with the cli, but is there an easier way to get a device by Name so that the channel can be set? Without checking each device when it gets printed?

To test the delay I have this snippet for the example cli for line examples/run_cli.py#L28:
        log = logging.getLogger(__name__)
        for device in enet.devices:
            if device.channels[0].name == "<***>":
                print(device)
                print(device.channels[0].get_current_value("onOff"))
                await asyncio.sleep(1)
                log.info("now")
                await device.channels[0].set_value("brightness", 0)
                log.info("done")
                print(device.channels[0].get_current_value("onOff"))

with the 1s sleep it takes 3 seconds to run "set_value" without it there is no delay.
log with one 1s:
False
2024-12-25 16:08:56,069 DEBUG enet.aioenet -- Requesting https://<IP_ADDRESS>:443/jsonrpc/visualization requestEvents
2024-12-25 16:08:57,071 INFO  __main__ -- now
2024-12-25 16:08:57,071 DEBUG enet.aioenet -- Requesting https://<IP_ADDRESS>:443/jsonrpc/visualization callInputDeviceFunction
2024-12-25 16:09:00,341 INFO  __main__ -- Setted value to 0
False

log without sleep:
False
2024-12-25 16:07:28,416 INFO  __main__ -- now
2024-12-25 16:07:28,416 DEBUG enet.aioenet -- Requesting https://<IP_ADDRESS>:443/jsonrpc/visualization callInputDeviceFunction
2024-12-25 16:07:28,417 DEBUG enet.aioenet -- Requesting https://<IP_ADDRESS>:443/jsonrpc/visualization requestEvents
2024-12-25 16:07:28,655 INFO  __main__ -- Setted value to 0
False

When commenting out the "requestEvents" request in the initialize function there is no delay:
https://github.com/mnordseth/enet-homeassistant/blob/main/custom_components/enet/aioenet.py#L81
When adding this after the first snippet there is a delay of more than 10 seconds with event request in the background and 3-6 seconds without (the line in the initialize function):
                await asyncio.sleep(16) # 16 or higher
                log.info("now2")
                await device.channels[0].set_value("brightness", 50)
                log.info("done2")


Add blocking

This PR adds blocking support to kcas and basically turns kcas into a proper software transactional memory (STM) implementation.
NOTE: Before you start reviewing, note that this PR is on top of the PR #47  that drops the Tx API.
  It is a first-order interface inspired by proposed "rendezvous" mechanism in a lockfree PR with support for cancellation.  Ultimately some sort of unified interface for suspend functionality should be provided by some other library, possibly the Stdlib.
For the blocking support this PR also introduces a dedicated Retry.Later exception for retrying transactions and higher-order single location updates.  Previously the Stdlib.Exit exception was used for that purpose, but I feel that having a dedicated exception makes the intent clearer and frees Stdlib.Exit for other purposes such as aborting a transaction.
This PR adds a Promise module based on the Promise module of Eio to the kcas_data package.  I also drafted some other Eio style primitives, but decided to move the development of those to another PR.
Perhaps a good place to start review is to read the couple of sections added to the README:

Blocking transactions
Scheduler interop

The blocking support works by adding a list of awaiters to locations.  When a location is modified, the awaiters are resumed.  This adds a bit of overhead to all operations as locations take an extra word of memory and those words also need to be accessed on every write operation.  Based on the benchmarks the overhead seems to result in the previous implementation being roughly about 1.05x faster (in some cases the overhead is less and in some cases more).  After a blocking operation is resumed, the implementation eagerly removes any awaiters it attached to locations to avoid space leaks.
One internal change made in this PR is that uses of Atomic.get and Atomic.set operations that do not need use fences for correctness are made to use functions fenceless_get and fenceless_set, which are just aliases for Atomic.get and Atomic.set.  I have another PR #46  that changes those to actually use fenceless operations and introduces some additional optimizations.
This PR also changes the description of the library to reflect the new capabilities by calling kcas "Software transactional memory based on lock-free multi-word compare-and-set".  I believe multi-word compare-and-set is less familiar technical jargon to potential users.

kcas-this is with blocking support and kcas-main is without blocking support.  As expected, blocking support adds some overhead.
Benchmark 1: kcas-main/_build/default/test/benchmark.exe 1 10000
  Time (mean ± σ):       3.5 ms ±   0.0 ms    [User: 2.6 ms, System: 0.6 ms]
  Range (min … max):     3.5 ms …   4.0 ms    826 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 1 10000
  Time (mean ± σ):       3.6 ms ±   0.0 ms    [User: 2.7 ms, System: 0.6 ms]
  Range (min … max):     3.5 ms …   3.9 ms    822 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  'kcas-main/_build/default/test/benchmark.exe 1 10000' ran
    1.01 ± 0.01 times faster than 'kcas-this/_build/default/test/benchmark.exe 1 10000'

Benchmark 1: kcas-main/_build/default/test/benchmark.exe 2 10000
  Time (mean ± σ):       7.7 ms ±   0.0 ms    [User: 6.8 ms, System: 0.6 ms]
  Range (min … max):     7.7 ms …   8.0 ms    386 runs

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 2 10000
  Time (mean ± σ):       8.0 ms ±   0.0 ms    [User: 7.1 ms, System: 0.6 ms]
  Range (min … max):     8.0 ms …   8.3 ms    372 runs

Summary
  'kcas-main/_build/default/test/benchmark.exe 2 10000' ran
    1.04 ± 0.01 times faster than 'kcas-this/_build/default/test/benchmark.exe 2 10000'

Benchmark 1: kcas-main/_build/default/test/benchmark.exe 4 10000
  Time (mean ± σ):      12.9 ms ±   0.1 ms    [User: 11.9 ms, System: 0.7 ms]
  Range (min … max):    12.8 ms …  13.2 ms    230 runs

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 4 10000
  Time (mean ± σ):      13.4 ms ±   0.1 ms    [User: 12.5 ms, System: 0.7 ms]
  Range (min … max):    13.3 ms …  13.8 ms    223 runs

Summary
  'kcas-main/_build/default/test/benchmark.exe 4 10000' ran
    1.04 ± 0.01 times faster than 'kcas-this/_build/default/test/benchmark.exe 4 10000'

Benchmark 1: kcas-main/_build/default/test/xt_benchmark.exe 1 10000
  Time (mean ± σ):       7.0 ms ±   0.1 ms    [User: 6.1 ms, System: 0.6 ms]
  Range (min … max):     6.8 ms …   7.3 ms    422 runs

Benchmark 2: kcas-this/_build/default/test/xt_benchmark.exe 1 10000
  Time (mean ± σ):       7.3 ms ±   0.1 ms    [User: 6.4 ms, System: 0.7 ms]
  Range (min … max):     7.2 ms …   7.9 ms    407 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  'kcas-main/_build/default/test/xt_benchmark.exe 1 10000' ran
    1.05 ± 0.01 times faster than 'kcas-this/_build/default/test/xt_benchmark.exe 1 10000'

Benchmark 1: kcas-main/_build/default/test/xt_benchmark.exe 2 10000
  Time (mean ± σ):      12.7 ms ±   0.1 ms    [User: 11.7 ms, System: 0.7 ms]
  Range (min … max):    12.5 ms …  13.2 ms    237 runs

Benchmark 2: kcas-this/_build/default/test/xt_benchmark.exe 2 10000
  Time (mean ± σ):      13.0 ms ±   0.1 ms    [User: 12.0 ms, System: 0.7 ms]
  Range (min … max):    12.8 ms …  13.3 ms    227 runs

Summary
  'kcas-main/_build/default/test/xt_benchmark.exe 2 10000' ran
    1.02 ± 0.01 times faster than 'kcas-this/_build/default/test/xt_benchmark.exe 2 10000'

Benchmark 1: kcas-main/_build/default/test/xt_benchmark.exe 4 10000
  Time (mean ± σ):      22.7 ms ±   0.2 ms    [User: 21.7 ms, System: 0.7 ms]
  Range (min … max):    22.4 ms …  23.7 ms    133 runs

Benchmark 2: kcas-this/_build/default/test/xt_benchmark.exe 4 10000
  Time (mean ± σ):      23.4 ms ±   0.4 ms    [User: 22.3 ms, System: 0.8 ms]
  Range (min … max):    23.0 ms …  25.5 ms    129 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  'kcas-main/_build/default/test/xt_benchmark.exe 4 10000' ran
    1.03 ± 0.02 times faster than 'kcas-this/_build/default/test/xt_benchmark.exe 4 10000'

Benchmark 1: kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 100000
  Time (mean ± σ):      20.9 ms ±   1.9 ms    [User: 35.0 ms, System: 1.6 ms]
  Range (min … max):    19.1 ms …  31.5 ms    139 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 100000
  Time (mean ± σ):      20.7 ms ±   1.3 ms    [User: 34.1 ms, System: 1.6 ms]
  Range (min … max):    19.6 ms …  29.5 ms    151 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Summary
  'kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 100000' ran
    1.01 ± 0.11 times faster than 'kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 100000'

Benchmark 1: kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 200000
  Time (mean ± σ):      39.6 ms ±   2.1 ms    [User: 68.7 ms, System: 2.2 ms]
  Range (min … max):    36.0 ms …  41.4 ms    73 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 200000
  Time (mean ± σ):      38.8 ms ±   2.0 ms    [User: 66.3 ms, System: 2.2 ms]
  Range (min … max):    37.2 ms …  42.7 ms    70 runs

  Warning: The first benchmarking run for this command was significantly slower than the rest (42.3 ms). This could be caused by (filesystem) caches that were not filled until after the first run. You are already using the '--warmup' option which helps to fill these caches before the actual benchmark. You can either try to increase the warmup count further or re-run this benchmark on a quiet system in case it was a random outlier. Alternatively, consider using the '--prepare' option to clear the caches before each timing run.

Summary
  'kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 200000' ran
    1.02 ± 0.08 times faster than 'kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 200000'

Benchmark 1: kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 400000
  Time (mean ± σ):      76.1 ms ±   4.9 ms    [User: 134.8 ms, System: 3.1 ms]
  Range (min … max):    69.8 ms …  85.3 ms    42 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 400000
  Time (mean ± σ):      76.7 ms ±   5.2 ms    [User: 133.9 ms, System: 3.3 ms]
  Range (min … max):    72.4 ms …  91.4 ms    34 runs

  Warning: The first benchmarking run for this command was significantly slower than the rest (86.5 ms). This could be caused by (filesystem) caches that were not filled until after the first run. You are already using the '--warmup' option which helps to fill these caches before the actual benchmark. You can either try to increase the warmup count further or re-run this benchmark on a quiet system in case it was a random outlier. Alternatively, consider using the '--prepare' option to clear the caches before each timing run.

Summary
  'kcas-main/_build/default/test/xt_parallel_cmp_bench.exe 400000' ran
    1.01 ± 0.09 times faster than 'kcas-this/_build/default/test/xt_parallel_cmp_bench.exe 400000'

Benchmark 1: kcas-main/_build/default/test/benchmark.exe 1 200000
  Time (mean ± σ):      35.3 ms ±   0.3 ms    [User: 34.3 ms, System: 0.7 ms]
  Range (min … max):    34.5 ms …  35.8 ms    85 runs

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 1 200000
  Time (mean ± σ):      36.5 ms ±   0.2 ms    [User: 35.5 ms, System: 0.7 ms]
  Range (min … max):    36.0 ms …  36.8 ms    82 runs

Summary
  'kcas-main/_build/default/test/benchmark.exe 1 200000' ran
    1.03 ± 0.01 times faster than 'kcas-this/_build/default/test/benchmark.exe 1 200000'

Benchmark 1: kcas-main/_build/default/test/benchmark.exe 2 200000
  Time (mean ± σ):     120.9 ms ±   0.3 ms    [User: 119.6 ms, System: 1.0 ms]
  Range (min … max):   120.5 ms … 121.6 ms    24 runs

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 2 200000
  Time (mean ± σ):     127.1 ms ±   0.1 ms    [User: 125.7 ms, System: 1.0 ms]
  Range (min … max):   126.8 ms … 127.3 ms    23 runs

Summary
  'kcas-main/_build/default/test/benchmark.exe 2 200000' ran
    1.05 ± 0.00 times faster than 'kcas-this/_build/default/test/benchmark.exe 2 200000'

Benchmark 1: kcas-main/_build/default/test/benchmark.exe 4 200000
  Time (mean ± σ):     224.9 ms ±   0.3 ms    [User: 223.4 ms, System: 1.2 ms]
  Range (min … max):   224.5 ms … 225.5 ms    13 runs

Benchmark 2: kcas-this/_build/default/test/benchmark.exe 4 200000
  Time (mean ± σ):     235.3 ms ±   0.3 ms    [User: 233.8 ms, System: 1.2 ms]
  Range (min … max):   234.7 ms … 235.8 ms    12 runs

Summary
  'kcas-main/_build/default/test/benchmark.exe 4 200000' ran
    1.05 ± 0.00 times faster than 'kcas-this/_build/default/test/benchmark.exe 4 200000'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 90
  Time (mean ± σ):      43.2 ms ±   0.1 ms    [User: 42.0 ms, System: 0.9 ms]
  Range (min … max):    42.9 ms …  43.6 ms    68 runs

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 90
  Time (mean ± σ):      44.1 ms ±   0.2 ms    [User: 42.9 ms, System: 0.9 ms]
  Range (min … max):    43.9 ms …  44.7 ms    67 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 90' ran
    1.02 ± 0.00 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 90'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 90
  Time (mean ± σ):      27.3 ms ±   0.2 ms    [User: 50.3 ms, System: 1.2 ms]
  Range (min … max):    27.1 ms …  29.0 ms    108 runs

  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 90
  Time (mean ± σ):      29.5 ms ±   0.2 ms    [User: 54.7 ms, System: 1.3 ms]
  Range (min … max):    29.3 ms …  30.5 ms    100 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 90' ran
    1.08 ± 0.01 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 90'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 90
  Time (mean ± σ):      17.3 ms ±   0.3 ms    [User: 57.1 ms, System: 2.0 ms]
  Range (min … max):    16.7 ms …  18.8 ms    159 runs

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 90
  Time (mean ± σ):      17.5 ms ±   0.2 ms    [User: 58.0 ms, System: 2.1 ms]
  Range (min … max):    17.1 ms …  18.6 ms    174 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 90' ran
    1.01 ± 0.02 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 90'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 10
  Time (mean ± σ):     255.8 ms ±   0.3 ms    [User: 254.3 ms, System: 1.2 ms]
  Range (min … max):   255.4 ms … 256.3 ms    11 runs

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 10
  Time (mean ± σ):     261.1 ms ±   0.3 ms    [User: 259.5 ms, System: 1.2 ms]
  Range (min … max):   260.7 ms … 261.6 ms    11 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 10' ran
    1.02 ± 0.00 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 1 1_000_000 1000 10'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 10
  Time (mean ± σ):     157.1 ms ±   0.2 ms    [User: 308.9 ms, System: 1.6 ms]
  Range (min … max):   156.8 ms … 157.4 ms    19 runs

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 10
  Time (mean ± σ):     177.3 ms ±   0.2 ms    [User: 349.0 ms, System: 1.7 ms]
  Range (min … max):   176.9 ms … 177.5 ms    16 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 10' ran
    1.13 ± 0.00 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 2 1_000_000 1000 10'

Benchmark 1: kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 10
  Time (mean ± σ):      90.0 ms ±   0.6 ms    [User: 344.9 ms, System: 2.7 ms]
  Range (min … max):    88.9 ms …  91.2 ms    33 runs

Benchmark 2: kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 10
  Time (mean ± σ):      91.4 ms ±   0.4 ms    [User: 350.6 ms, System: 2.8 ms]
  Range (min … max):    90.5 ms …  92.3 ms    32 runs

Summary
  'kcas-main/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 10' ran
    1.02 ± 0.01 times faster than 'kcas-this/_build/default/test/kcas_data/hashtbl_bench.exe 4 1_000_000 1000 10'

For this review [...]

Thanks for the review!
My plan now is to move the Domain_local_await thing to a separate repository and release it as a separate package on opam and adjust this PR (and related PRs) to use that package.
As has been discussed elsewhere, the idea with Domain_local_await is to provide a mechanism that works today and should also work in the future to implement blocking in kcas and potentially other places like lockfree.  Specifically, I want to be able to publish a new version of kcas that potential users can install, today, from opam and then that version of kcas should just work out of the box, allowing users to use blocking and to communicate and synchronize between domains, systhreads, Eio fibers, Domainslib fibers, and anything else that support Domain_local_await.
However, in the future we may end up using some different means to provide blocking support.  This is not a problem for me and should not be a problem in general and we can then change kcas to use such a future mechanism when it is available.  At that point we can deprecate Domain_local_await and remove support for it from schedulers.
It should also be mentioned that Domain_local_await is something that 99% of users should not need to know about at all.  It is just an internal mechanism that allows blocking support.  So, if and when we decide what the final interface for such blocking support is, most users should not even notice that it changed (they just upgrade their packages and at some point the Domain_local_await package is no longer used at all).