drivers/sensors: Add support to Renesas FS3000 Air Velocity Flow

Summary
This driver add uORB sensor support to Renesas FS3000 sensor.
Impact
Users will be able to use FS3000 sensor on NuttX
Testing
using US082-FS3000EVZ  module

[Experimental Bot, please feedback here]
No, this PR summary does not adequately meet the NuttX requirements.  Here's why and how to fix it:

Insufficient Detail in Summary:  The summary is too brief.  It mentions adding uORB support, but doesn't explain why this is necessary (e.g., was there no FS3000 support before? Was existing support inadequate?). It also lacks detail on how the change works (e.g., what files were modified, new files added, core logic implemented).  Mentioning the specific functional area (e.g., sensors/drivers) is also helpful.  Finally, link any related NuttX issues.

Incomplete Impact Assessment: While it mentions user impact, it's very general.  You need to address all the impact points:

Is new feature added? Is existing feature changed? Yes, a new feature (FS3000 support) is added.
Impact on build:  Likely NO, but confirm. If any Kconfig changes are needed, specify them.
Impact on hardware: YES, specifically for Renesas platforms and boards using the FS3000. List the specific architectures/boards.
Impact on documentation: YES, documentation needs to be added to explain how to use the new driver.  State whether this documentation is included in the PR.
Impact on security, compatibility:  Probably NO for both, but explicitly state this and justify it briefly if there's any potential concern.

Missing Testing Details:  "using US082-FS3000EVZ module" is not enough.  Provide the required details:

Build Host:  OS, CPU architecture, compiler version (e.g., Linux x86_64, GCC 12.2.0)
Target: Architecture, board, configuration (e.g., armv7-m, stm32f4discovery, nsh).  Be very specific.
Logs:  You must include "before" and "after" logs demonstrating the driver's functionality.  Show sensor data being read and published via uORB.  Without logs, reviewers cannot verify the change.

Example of an improved summary:
## Summary

This PR adds support for the Renesas FS3000 sensor by implementing a new driver and integrating it with the uORB sensor framework. Previously, the FS3000 was not supported in NuttX. This driver allows applications to access sensor data (e.g., [specify data types]) from the FS3000 via uORB topics.  The driver interacts with the FS3000 using [I2C/SPI/other interface] and publishes sensor readings to the `/sensor/fs3000` uORB topic.  Key changes include adding the driver code to `drivers/sensors/fs3000.c` and updating the configuration files to enable the driver.

Relates to [NuttX Issue # if applicable]

By providing more complete and specific information, you make it easier for reviewers to understand and approve your PR. Remember, a good PR description saves everyone time and leads to a faster integration process.


fix: ppp points can be numpy float

...making it json unfriendly.

Codecov Report

Merging #14 into devel will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##            devel      #14   +/-   ##
=======================================
  Coverage   84.14%   84.14%
=======================================
  Files           5        5
  Lines         656      656
=======================================
  Hits          552      552
  Misses        104      104

Impacted Files
Coverage Δ

model/app.py
78.33% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Add typing annotations to tracer.py.

Please add the module to mypy.ini so that typechecking actually takes place

Please add the module to mypy.ini so that typechecking actually takes place

Oh, it felt like I was forgetting something. I'll update it.


Too many Track and CRTHit attributes are optional

All attributes except id are currently given default values, but more of these should be required.

For CRTHit, time and position values should be required.
For Track, points and depositions should be required. Maybe also image and interaction ID.
For MatchCandidate, DCA should be required

Done. Did indeed make image and interaction ID required for tracks. Will revisit if people complain.


Save player progress between sessions

Is this what you are saying? https://stackoverflow.com/questions/50458409/session-storage-in-js. Just store a save code in a session storage. Or do you think we could use cookies?

https://github.com/js-cookie/js-cookie looks like an easy API we can use


Question: tracking borrow stack for location

Miri offers a way to track pointer tags, but is it possible to track changes in the borrow stack of  given locations? I'm trying to learn why miri refuses to accept my code . I have the following error:

trying to reborrow for SharedReadWrite at alloc1752, but parent tag <4401> does not have an appropriate item in the borrow stack

After tracking tag 4401 I can see the following:

--> src/main.rs:61:29
|
61 |     println!("{}", unsafe { &(*p).name });
|                             ^^^^^^^^^^ popped tracked tag for item [Unique for <4401>]

Then:

--> src/main.rs:61:29
|
61 |     println!("{}", unsafe { &(*p).name });
|                             ^^^^^^^^^^ popped tracked tag for item [Unique for <4401>]

And finally the error code I attached above. But then if there is no appropriate item in the borrow stack, then what items are there?

The problem is in the creation of the pointer. We should probably show the creation of tags, too, not just when they get popped.
TLDR: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=e630cea44c594a03894952db82201f0a works
Longer version:
the pointer in ch.parent is older (lower on the stack) than the pointer in the Pin<Box<..>> of f. This means when reading it, you pop all younger (higher on the stack) pointers. So when we want to drop the pin box later, the pointer's tag is invalid.
The high-level reason this happens is that you create the ch.parent pointer before you do assume_init.

Many thanks for your helpful insight.
Actually, the tag's creation was logged:
note: tracking was triggered
   --> /home/kyku/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/pin.rs:572:15
    |
572 |         Pin { pointer }
    |               ^^^^^^^ created tag 4377


[kube-prometheus-stack] remove heritage-service and fix rules

What this PR does / why we need it
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer
Checklist

[ ] DCO signed
[ ] Chart Version bumped
[ ] Title of the PR starts with chart name (e.g. [prometheus-couchdb-exporter])

service prometheus-k8s 将由外层 WhizardMonitoringHelper charts 维护，不再包含在 kube-prometheus-stack 中，且该 Service 将视部署选择 prometheus Pod 或 whizard-agent-proxy Pod，统一入口，以保证其他组件不需调整。
/cc @benjaminhuo @junotx


Xwayland is launched when wl-clipboard is installed

Description of the problem or steps to reproduce
Have wl-clipboard installed
have xwayland installed
run micro, it launches xwayland, when copying/cutting it also launches xwayland
Specifications

Version: 2.0.13
Commit hash: 68d88b57
Compiled on October 22, 2023
OS: Arch Linux, sway with xwayland
Terminal: Foot
Xwayland is pretty heavy service, even if it auto terminates, it consumes 141MB for few seconds

So you use sway with still enabled xwayland and no pure wayland session only.
Currently I would assume, that this is something wl-clipboard respective wl-copy & wl-paste do by their own to support pasting into X windows depending on the current wayland session.
But I could be wrong.
Can you try if the same happens when you invoke wl-copy or wl-paste from your terminal (Foot)?

Nope, invoking wl-copy or wl-paste doesn't launch xwayland.
After investigating further I see that micro uses clipper for clipboard which is made by the same author. It's bug in clipper.

Clipper should just launch wl-copy/wl-paste. I don’t have a wayland environment to test in, so if you discover how the issue might be fixed please let me know.

After further investigation, I figured out that the issue happens with wl-clipboard when piping text to it
echo "Hello" | wl-copy
But  wl-copy Hello doesn't launch xwayland. From clipper code I see it is using wl-copy stdin.
I'm opening issue in the wl-clipboard repo


Turtle chunk loaders lagging server after crash

Describe
After restarting the server due to a 60 seconds tick crash. The server was running at around 7tps.
Running the debug command showed my chunk loading advanced turtles to be using around 60%, despite no code running after the restart. - Breaking the turtles returned the server to around 18tps.
Reproduce
Steps to reproduce the behaviour:

Running a program (https://pastebin.com/xvk0X0AK) that cleared an area I created, for a long time. 5ish hours
The server crashed
After restarting the turtles were eating up processing time.


Restricting user input aka controlled input

I have a question.
Is it at all possible to enforce a structure of the document/block to only allow lists for example? I would like to start with say one empty bullet in UL and allow user to add more bullets and delete bullets but always keep the bullet format - no other form of input is allowed.
Are there any examples how one could achieve this if at all possible with DraftJS?
Thanks.

It's very possible.
You can do this by creating your own key binding and key command handler and handling the various keys or bindings as needed. You'll need to override some other handlers, such as for paste, to ensure non-list content doesn't make its way in other ways.

Are there any examples/documentation on how to go about creating custom key binding and key command handlers?

https://draftjs.org/docs/advanced-topics-key-bindings.html#content

This seems like a very shallow example. One page doc that really does not show off what needs to be done. I see some issues.
For example... DraftEditor runs function editOnKeyDown(editor, e) on keyDOwn and eventually calls onKeyCommand(command, editorState)
var newState = onKeyCommand(command, editorState);
if (newState !== editorState) {
  editor.update(newState);
}

This is not good. I have no way to do anything after onKeyCommand runs, I cannot overwrite it.
What if I would like to do something different than default inside onKeyCommand or do some postprocessing?

Well sure, the example could be more thorough, but it does show you the basics to get it working. I'm not sure I'm following you here, what are you unable to do?

I have a UL in the editor and a bunch of LI.

After each backspace is pressed I want to let editor do its default work and then inspect the content blocks for LI and if text is empty I want to replace text with some placeholder.
When LI gets focus, I want to inspect the content blocks for LI and if text is placeholder I want to replace the text to empty string
When LI loses focus and the text is empty I want to replace the text of the LI block with placeholder.

I didn't want to open a new issue after seeing this one, but I also am having similar issues. The documents state that Draft.js is supposed to behave like a controlled input, but if I ignore change events completely, or if I allow only changes to selection like so:
editorChanged = (eventState: EditorState) => {
    let selection = eventState.getSelection();
    let newState = EditorState.acceptSelection(this.state.editorState, selection);
    this.setState({ editorState: newState });
}

The user can still type away and the on-screen contents are being updated. Is there something I need to do in order to let Draft.js know that certain blocks need to have their DOM nodes invalidated / reset to match the unchanged ContentState?

@sophistifunk: If you want to block text then provide a handler for Editor.handleBeforeInput to reject the input you want.
Draft plays a game with the browser: in many cases the browser is allowed to pass the character through and Draft reacts to its presence rather than controlling it entirely. The relevant code is starts at https://github.com/facebook/draft-js/blob/6f2bf66bacff3ffac234fc21ff3720344ff92776/src/component/handlers/edit/editOnBeforeInput.js#L128.

@colinjeanne thanks for that, it seems to work. Do you guys maintain the TypeScript defs, or do I need to talk to a third party about them? Some types for example DraftHandleValue are required as part of exported types, but not actually exported so you can't mark your handlers as returning it, or cast to it by name, you need to redefine it or cast as one of the consts.

I am trying various approaches and at the moment need to change the behavior of keyCommandPlainBackspace.js. Basically I want majority of the code there to execute except is some key scenarios. How do I do this in a clean way? If I take the code from keyCommandPlainBackspace.js and make it part of my app, it has a bunch of internal dependecies such as
var EditorState = require('./EditorState');
var UnicodeUtils = require('fbjs/lib/UnicodeUtils');

var moveSelectionBackward = require('./moveSelectionBackward');
var moveSelectionForward = require('./moveSelectionForward');
var removeTextWithStrategy = require('./removeTextWithStrategy');

and since these are not expose in draft, I would have to points these to explicit locations within node_modules/draft-js/lib which is not ideal.
What is the recommended strategy / approach for making something like this work cleanly?

None of that code is particularly difficult to replicate using things like Modifier.removeRange and setting the selection. What are you trying to do?

My editor has UL and it needs to hold on to UL despite various combinations of backspace. The default behavior with backspace varies between single backspace, backspace word, backspace to the start of the line but the common theme is the logic does not preserve UL structure. With single backspace, when empty LI is backspaced, an unformatted block is inserted at the end and the next backspace jumps to the next LI. Also, default behaviour deletes UL completely if it is the the only LI in UL and inserts a unformatted block. I have added some logic in three handlers:
keyCommandBackspaceToStarOfLine.js
keyCommandBackspaceWord.js
keyCommandPlainBackspace.js
that basically ignore the backspace when certain conditions potentially destroying the UL structure are detected.
Here is the example from keyCommandBackspaceToStarOfLine.js

var {EditorState} = require('draft-js');

var expandRangeToStartOfLine = require('draft-js/lib/expandRangeToStartOfLine');
var getDraftEditorSelectionWithNodes = require('draft-js/lib/getDraftEditorSelectionWithNodes');
var moveSelectionBackward = require('draft-js/lib/moveSelectionBackward');
var moveSelectionForward = require('draft-js/lib/moveSelectionForward');
var removeTextWithStrategy = require('draft-js/lib/removeTextWithStrategy');

function keyCommandBackspaceToStartOfLine(editorState) {
    var afterRemoval = removeTextWithStrategy(editorState, function (strategyState) {
        var selection = strategyState.getSelection();
        var content = editorState.getCurrentContent();
        var key = selection.getAnchorKey();
        var block = content.getBlockForKey(key);
        var blockBefore = content.getBlockBefore(key);
        var blockAfter = content.getBlockAfter(key);
        var blockText = block.getText();
        if (selection.isCollapsed() && selection.getAnchorOffset() === 0) {
            if (blockBefore && blockBefore.getType() === "unordered-list-item") {
                return moveSelectionBackward(strategyState, 1);
            } else if (blockText.length || (blockAfter && blockAfter.getType() === "unordered-list-item")) {
                return moveSelectionForward(strategyState, 1);
            } else {
                return selection;
            }
        }

        var domSelection = global.getSelection();
        var range = domSelection.getRangeAt(0);
        range = expandRangeToStartOfLine(range);

        return getDraftEditorSelectionWithNodes(strategyState, null, range.endContainer, range.endOffset, range.startContainer, range.startOffset).selectionState;
    }, 'backward');

    if (afterRemoval === editorState.getCurrentContent()) {
        return editorState;
    }

    return EditorState.push(editorState, afterRemoval, 'remove-range');
}

My logic tests a few contexual conditions and basically changes the default behaviour in draft. I had to import several other modules to allow me to accomplish this though.
So the logic is complex but mostly duplicated from original handlers because there is no way to tap into what they do and inject your own custom logic at fine grained level.
Makes sense ?

Here's a potential way to work around this: in your component take a ref on the DraftEditor and maintain a last known good EditorState. In your onChange handler if the incoming EditorState is empty except for an unstyled block then update your last known good EditorState to have a single empty list item block. Then call update on your ref to the DraftEditor and pass in your updated last known good editor state.
If, the incoming editor state was valid then just set your last known editor state to this new editor state.
Basically: let Draft do what it was going to do but once it does validate that it meets your criteria and fix things up if it doesn't.

What you are suggestion is not a reliable and deterministic approach. Besides unformatted block I am inspecting several other conditions and take different actions based on them: moveselectionforward, moveselectionbackward, accept backspace if there is text in the UL etc. I cannot let draft "do its thing" because I would like to interfere with it in a handful of circumstances which can only be derived inside these key handlers unfortunately.

I don't know the specifics of what' you're trying to do or what experience you are trying to build. The issue with the undo stack is taken care of by maintaining the last known good editor state: you throw away the editor state that's passed to your onChange handler by updating the last known good one directly and passing that to update. That allows you to control the undo stack.
Depending on the conditions you are trying to detect in the various backspace handlers, you may be able to detect them in a custom key command handler and save some state about what's happening. Hopefully you'll sufficient data to then reconstruct whatever you were trying to detect in Draft's own logic.
Of course, barring that, you can fork the project.

@colinjeanne - what you are suggestion i.e taking action after standard draft key handlers run cannot work. Modifications to redo stack is one reason, another reason is that editOnKeyDown.js actually modified EditorState.
var newState = onKeyCommand(command, editorState);
if (newState !== editorState) {
  editor.update(newState);
}

This is why it is so critical to be able to tap into handlers invoked by onKeyCommand and execute your own logic before all of this happens.
What I am trying to do is not really rocket science. My editor has to enforce bullet layout (unordered list) and maintain at least one bullet or LI in the editor regardless of key presses or paste actions. So far, the only way to accomplish this in a deterministic fashion was to add my own logic into those three key handlers I mentioned earlier. While it is working like a charm, the way it is done is not proper i.e. forcing me to copy/paste entire handler and import a bunch of other internal Draft functions ....If Draft codebase is updated, I am kind of in a pickle...
That is why I said there is a strong need to open up key handlers so that custom code can be executed within them without forcing to copy/paste anything...

@andpor have you found any solution?

@AdriatikDushica - I had no choice but to take the whole keyhandler copy from draftjs and put it in my local. I wish there were more hooks into draftjs that would allow me to modify behavior of already written code with simple config...

Actually this approach did not work in a long run. It worked fine for our own code howver various other modules add-ons such as draft-js-to-html and draft-js-plugins refer to root level (node_modules) draftjs installation. Consequently entities fail to work because entities are maintained in a module var singleton so our code would be changing local draftjs registry while other code would be hitting node_modules one - which is naturally quite bad.
Still struggling how to overwrite default keystroke behaviour without replicating tons of code...


Added support for hosted LLMs

Updates to llm_config and llm_wrapper to allow for Anthropic and OpenAi / OpenAI-like hosted LLMs

The way to access the local models is through the OpenAI library because they all support it.

The program specifically uses Ollama for a reason:
Ollama has its own API and interface designed for local models
Ollama handles model management, context windows, and local deployment efficiently
It's purpose-built for running local models
The OpenAI library is NOT meant for local models:
It's designed specifically to interact with OpenAI's API services
It's for hosted models that cost money per request
It has completely different endpoints, authentication, and usage patterns
While some projects do try to emulate OpenAI's API format locally (like LocalAI), that's:
Not what Ollama is designed for
Would add unnecessary complexity
Would limit Ollama's native capabilities
Would add an extra layer that could break

@TheBlewish I'm using LM Studio on Mac which exposes an OpenAI-compatible endpoint and can run MLX models (which are faster, especially in first-time-to-token).
@NimbleAINinja 's works nicely with LM Studio by just overriding the URL and specifying the name of one of my local models.
Is your issue only with the additional openai and anthropic dependencies in requirements.txt?

Imma just gonna put this here: https://ollama.com/blog/openai-compatibility
Even Ollama has OpenAI API endpoints. Unless you specifically need some functionality that is in ollama's own API that's not in the OpenAI API, you could simplify the solution while at the same time significantly increasing backend options.
A short list of popular local llm servers that provide OpenAI API compatibility, and would all work with this project if it only provides openai api support:

KoboldCPP
vLLM
LM Studio
Ollama
oobabooga/text-generation-webui
tabbyAPI
llama.cpp server

Compared to the list  using ollama's own API:

Ollama

OpenAI's API is in practice an industry standard, and just about every local llm hosting solution support it.

You should really let people use their OpenAI-compatible endpoints. Maybe throw in a warning about token usage if you want.
Many people don't use ollama to run their local llama (koboldAI, LMstudio, etc...) and all those software expose an open AI compatible endpoint.
There are also many very cheap hosted models to use through providers or proxy like Openrouter

Absolutely wild to me that you won't at least allow people the option.

When you're in a nanny state competition and your opponent is @TheBlewish. Christ.
Someone will make a fork which attracts most user and dev attention.

I agree with everything everyone else here has said @TheBlewish
I would rather just use LMStudio for this like I do with everything else. It makes perfect sense to support any openAI compatible hosted LLM, whether on a cloud service or your own machine. If a user is savvy enough to install this and get it running, they should know that running on some cloud APIs will be quite expensive.

@NimbleAINinja if this goes nowhere, are you open to contributions on your fork?

@NimbleAINinja @TheBlewish I tried this fork. It worked with zero tweaks connecting to my openrouter.ai account.
However, after scraping like 5 pages, it said that the document size was 127% the context window. Interesting because I was using a model with 128k token context. Not sure what happened.

You'll also notice the articles found are not relevant at all.

@synth-mania yes, I'm open to contributions. I'm also going to add support for alternate search providers like Brave, Exa and Tavily.

@NimbleAINinja Excellent. I'll send some PRs your way.
Also, I'm not the most experienced with github, but I noticed your fork doesn't have an issues or discussions tab. Why is that? It would be handy.

@synth-mania I have activated the Disussions tab.

Yo Guys I am down with Making this compatible with OpenAI endpoints, I didn't realize so many services use them, so does this merge work? Let me know and i'll test it and merge it, sorry for the delay i've been busy with uni

i'll install LLM studio and test this

It works mate, was 100 lines of code, mostly config items, hardly a heavy lift.


nfs_tools: Helpers for NFS (client-side only) and SUNRPC subsystem.

Drgn helpers to display NFS and SUNRPC major data structures in vmcore or live system.
This initial version has support for NFS client-side only. NFS server-side support will be added in future enhancement.

@daimngo I've been out for conference / holiday stuff for the past few weeks. Please do let me know if you're still working on this branch, or if it is ready for another round of review. Thanks!


Add unit tests

As suggested by @SD10 on slack, adding tests can be a great move. Creating this issue to keep a track on this!
@SD10 I'm assigning this to you since you wanted to give it a first try (to avoid that someone else starts something), but don't hesitate to unassigned yourself if you are not interesting in anymore, not enough time... or for whatever reason is it

I think it's highly unlikely that anyone wants to take a stab at this issue, but if you do please get in touch with me first as I've already begun this process.

Current Coverage:
Protocols:

[X] CornerDesignable
[X] FillDesignable


deepcopy changes finite state machine

I am trying to use the finite state machines and regex together in my code but the finite state machine changes when I copy the object
regex = parse(".*")
fsm = regex.to_fsm()
fsm_copy = copy.deepcopy(fsm)
fsm.equivalent(regex.to_fsm())  # True
fsm_copy.equivalent(regex.to_fsm()) # False
fsm_copy.equivalent(fsm) # False

fsm objects are intended to be immutable, so it should never be necessary to copy them in this way. Is there a reason you're not able to do
fsm_copy = fsm

?


"slideToClickedSlide" option is failed on Coverflow effect

This is a (multiple allowed):

[x] bug

[ ] enhancement

[ ] feature-discussion (RFC)

Swiper Version: 3.4.2

Platform/Target and Browser Versions: Windows + Chrome (my development environment)

What you did
new Swiper('.swiper-container', {
    centeredSlides:         true,
    slidesPerView:          'auto',
    slideToClickedSlide:    true,
    grabCursor:             true,
    loop:                   true,
    pagination:             '.swiper-pagination',
    paginationClickable:    true,
    effect:                 'coverflow',
    coverflow:              {
        rotate:     0,
        stretch:    300,
        depth:      300
    },
    onClick:                function (swiper) {

        console.log(swiper.clickedIndex, swiper.clickedSlide);

        //  These two properties will be undefined
        //  as clicking on slides behind the current slide
        //  in coverflow effect.
    }
});

Expected Behavior
Slide to the slide which is clicked on.
Actual Behavior
There's no difference between true or false value of slideToClickedSlide, no sliding on click.

@TechQuery I was working with a similar slider on Friday. I had a similar problem because the content of slide was a lot smaller than actual slide ( it had margins ). I fixed it by adding pointer-events: none to slide and pointer-events: all to underlying dom and attached custom function to trigger slideTo function :) So basically events ignored .swiper-slide element.


Not working with Visual Studio Professional 2017

carnac works at everywhere but vs2017 pro
I have VS Pro 2017 Version 15.2 (26430.6)
They did something, a few months ago after I update vs autohortkey stopped working too.

carnac works at everywhere but vs2017 pro

Not sure what you mean by "works" here. Does the solution not open? Or does carnac not work at runtime? Any errors you see would also be helpful to isolate the issue (Event Viewer might have some information too).

I mean program runs but does not get any key record. Keys tab shows nothing while I'm using VS2017.
But in all other programs works great.

I was running VS as admin because my program needs admin rights. tried to run carnac as admin but you have already an issue for that #115.
Btw can you give some keywords to how did you do this -> I cannot click pressed key list window, when I click it goes below.

I remember Carnac is not able to get the key if the target program is running under Admin privilege.

I think it is working but the settings are bugged see https://github.com/Code52/carnac/pull/151
remove the visual-studio.yml from the keymaps folder or try my version from the fork.

@bfritscher your fork is not working too, it is about running as admin it I don't run VS as admin, carnac works.

Ok so what is the problem with running carmac run as admin? I tested it with carmac as admin and notepad as admin and it got the keys. Is there something different with visual studio?

I'm sure carnac was not starting when I run it as admin but it works now. You can close the issue. I am able to run carnac as admin and it works with vs2017 and with other apps too.

Closing this issue as solution is not crashing anymore when run as admin


Not able to create SVG element in IE8 browser.

I am using r2d3 library to make d3 chart  work in IE8 browser.
In r2d3 library they are using 'shape ' element  instead of 'SVG' element.
My concern is d3-tip is not able to understand shape element. so it is throwing error  like 'not able to create SVG element'.

Triaging Issues.  IE8 is no longer supported.


Update tests to include testing native functions

Check code coverage, get as high as possible

Make sure to have tests that exercise calling native functions as expression statements, i.e.
{
  printNum(3);
}

Update tests to explicitly import jest globals (see https://jestjs.io/blog/2020/05/05/jest-26#a-new-way-to-consume-jest---jestglobals)


Question:  WeMo Smart LED Bulbs

Hi
Thanks for a great piece of code...total cool, im using it everyday.
One question, do you plan to implement the WeMo Smart LED Bulbs ?
So it will be possible to dim the bulb, or set anything else to a certain value...volume, or channel up/down ?
Thanks in advance.

Thanks.
I have not looked at WeMo Smart LED Bulbs yet mainly, because they are expensive (at least for me).  I assume they work some what similar. Try sniffing on HTTP traffic from Alexa to bulb and see.
I have different setup at home .. a cheap one.  I brought milights from AliExpress about 10$ each. Then brought the remote controller about 7$ and used my raspberry pi + rf controller to emulate the remote.  then used fauxmo (https://github.com/makermusings/fauxmo) to trun on/off using alexa. I have been using this setup for about 3 months now, didn't burn down my house yet.
https://www.raspberrypi.org/magpi/pi-mi-light/

Ok, sounds great with your setup. Always funny to make new things.
I read that Alexa do not support Wemo Light Bulb, so I think I will look at something else to copy a up/down function from.
I need a function to control all this:
/* Declare Samsung TV callbacks  (on-off)  */
void SamsungTVOn();         //Samsung TV toggle ON/OFF
void SamsungTVOff();        //Samsung TV toggle ON/OFF
void SamsungMuteOn();       //Samsung TV Mute
void SamsungChannelUp();    //Samsung TV Channal up
void SamsungChannelDown();  //Samsung TV Channal Down
void SamsungVolumeUp();     //Samsung TV Volume up
void SamsungVolumeDown();   //Samsung TV Volume down
void SamsungCH1On();        //Samsung TV Ch 1
void SamsungCH2On();        //Samsung TV Ch 2
void SamsungCH3On();        //Samsung TV Ch 3
/* Declare Marantz callbacks  (on-off) */
void AmplifierOn();           //Amplifier ON
void AmplifierOff();          //Amplifier OFF
void AmplifierVolumeUp();     //Amplifier volume up
void AmplifierVolumeDown();   //Amplifier volume down
void AmplifierAuxOn();        //Amplifier Aux input
void AmplifierTunerOn();      //Amplifier Tuner input
void AmplifierTvOn();         //Amplifier TV input
void AmplifierDVDOn();        //Amplifier DVD input
void AmplifierScourceUp();    //Amplifier Source up
void AmplifierScourceDown();  //Amplifier Source down
void AmplifierMuteOn();       //Amplifier Mute toggle
void AmplifierMuteOff();      //Amplifier Mute toggle
/* Declare Mile callbacks  (on-off) */
void VacuumCleanerOn();       //Vaccum Cleaner toggle ON
void VacuumCleanerCornerOn(); //Corners ON
void VacuumCleanerGoOn();     //Go Go Go
void VacuumCleanerBaseOn();   //Return to home
As you can see, I need use a couples of up/down functions to control volume aso.  So if you have any great ideas, I would gladly hear them.

This seems to be a winner
https://www.engadget.com/2017/01/03/wemo-dimmer-switch-and-mini/

Btw do you have issue with the discovery numbers. Sometimes Alexa will only discover 4 switches, even if theres 8 ?  And I have to discover 3-4 times.


Replaced all PNGs with SVGs

Closes #94
PNGs in all the screens have been replaced with SVGs. This took me more time than was expected and the reasons for that are listed below.
Some thing to note

The most recent version of flutter_svg plugin is not compatible with the most recent version of flutter on stable channel, so I had to use a previous version of the same plugin.
flutter_svg somehow does not support <style> tag which was present in all the SVGs, if the <style> tag is used, the console throws an error and the SVG is not visible in the app. I got the first SVG re-written by someone else (I am not good with tags and CSS) and after that I found an open source software (this was suggested to me by the owner of flutter_svg plugin) that re-writes the whole SVG and makes it compatible with the plugin.

A suggestion - Maybe we can add some information in the README or in Contributing guidelines about this, that if someone wants to modify or add any SVG he/she must pass it through the software (mentioned above) first and then add it to the codebase to avoid errors.
Lastly please review and add the necessary tags for MWoC before merging.
Thank you:)
Screenshots
A similar thing is also done in the splash screen.

Instead of putting the circle around the logo in the app drawer change the colour of the background of the app drawer to dark blue or black. You can keep the colour of drawer white in light mode if you want.

Here are the updated screenshots, let me know if you want any further changes. Thanks!

@smaranjitghose first 3 PRs don't have the CrossWOC and difficulty labels. This is the first (The program started on 13th February).


merge tags

:white_check_mark: Build TheIdServer 5.0.1-ci1-0073 completed (commit https://github.com/Aguafrommars/TheIdServer/commit/4ab865dab9 by @)

:white_check_mark: Build TheIdServer 5.0.1-ci1-0074 completed (commit https://github.com/Aguafrommars/TheIdServer/commit/fc2c4b91e2 by @)


TODO: (Notebooks) Profile and Feature Extractor Refactor

Currently, style profiles are fed text and score text. They take a feature extractor as a dependency in order to process the text and score it. This dependency is unnecessary and leads to a restrictive design because feature extraction and profiling would like to be done at different stages for efficiency concerns. Also, profiles do not handle edge cases well which has led to hard to find bugs when trying to benchmark and utilize the profiles.
Profiles should be refactored so that they only work with numpy arrays representing extracted features. If the previous behavior is desired, profiles and feature extractors can be composed into a coordinator class that takes both as dependencies, while still allowing profiles/extractors to be composed in different ways. This is currently not needed though. Also, the flagging responsibility of the profiles should be handed off to another class, Thresholder, since there is not a general threshold that applies to all feature extractors. This class should be trainable, and the algorithm complexity for training should be documented with the class.
Feature extractors should retain their interface, but they should internally be decomposed into smaller classes, in case a similar refactor for them is needed in the future.
The benchmarking code should take advantage of this refactor by preprocessing the BAWE dataset beforehand for each feature extractor and then only utilizing the profiles/thresholders in the benchmarking process.

Current progress: New profile interface is decided and a EuclideanProfile class is almost completed. Happy path testing is done but need to test edge cases, but the class is technically ready for use.
Need to work on: Feature extractor refactor, thresholder, and benchmarking code.
Plan to finish by Wednesday night.


Model section feature looks differently.

Need Urgent Help on this issue.
Installation Method

For Installation as per mentioned.

pip install open-webui

For running.

open-webui serve

Environment

Open WebUI Version: v0.5.2

Ollama: v0.5.4

Operating System: [Windows 11 Pro]

Browser: [Bing, Brave, Chrome]

Confirmation:

[x] I have read and followed all the instructions provided in the README.md.
[x] I am on the latest version of both Open WebUI and Ollama.

Expected Behavior:

Need to get a feature for upload the model just like first screenshot.

Actual Behavior:

Actually getting a blank on model's page. means how could I set the model configurations on it's model's page.

Description
Bug Summary:
I get something different layout on model's tab in admin panel setting.

Actually recently I watch a video about how to run own LLMS model locally with OpenWeb UI. After all the installation process I notice a strange thing that in a video I get different layout on my model section and in a video is different.

Although a video is about 2-3 months old from 24-Dec as I post this date. And we both follow the same downloading process like with using pip install open-webui, then open-webui serve for run. Can you solve my doubt if I'm wrong or I missed something. Thanks in advance.

Logs and Screenshots
Screenshots/Screen Recordings (if applicable):
IN YOUTUBE VIDEO

MY WORKSPACE

The interface has changed since that video was published.  To add models you will need to go under Admin>Settings>Connections and under Ollama API you will see a little wrench icon.  Click on that and you will find the area to download\update models.

@beastech Thank buddy.


Question about GAN code: update the generator while training the discriminator

Through reading ur code, I think you update the generator while training the discriminator. We should detach it while training the discriminator, right?

https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/406_GAN.py#L52-L53

Thanks man, I understand now. I got confused by comparing ur code with the DCGAN tutorial on pytorch website. Thanks again!


Prison compatibility and Prison variables ???

Hello @games647
I noticed that on your Dev Bukkit plugin page that you state that ScoreboardStats is compatible with Prison -- if it is, then what are the useable variables to use Prison in conjunction with ScoreboardStats?

http://dev.bukkit.org/bukkit-plugins/scoreboardstats/?comment=2389


Update utils.py

According to https://stackoverflow.com/questions/56127592/attributeerror-module-tensorflow-has-no-attribute-configproto,
replace with tf.compat.v1.ConfigProto

Hi,
I updated the utils.py. Still, I got the same error.
I would like to train the model using the CPU.
Any recommendations, please?
Thanks


Can't compile or test tch-rs

Hi,
I can't manage to test tch and play with tensors in rust. I spent many hours now, with vscodium & console only, via conda or pytorch.org direct download, followed many tutorials (official one and unofficial)..
I am attempting to use tch-rs 0.15.0 (downloaded automatically by cargo using dependancies), to run the following example program:
(from https://home.futuretim.io/posts/tch_test/ )
""
use tch::{Tensor, Device};
fn main() {
println!("Hello, world!");
let device = Device::cuda_if_available();

let val = Tensor::rand([2, 3], (tch::Kind::Float, device));

println!("Device info:");
println!("{:?}", device);

println!("Values:");
val.print();

}
""
2 "best" solutions I get :

I manage to compile by unzipping "libtorch-cxx11-abi-shared-with-deps-2.2.0+cu118" from pytorch.org to my "/home/user/" and use these environment variables:
export LIBTORCH=/home/user/libtorch
export LIBTORCH_LIB=/home/user/libtorch/
export LIBTORCH_INCLUDE=/home/user/libtorch/
export LIBTORCH_BYPASS_VERSION_CHECK=1

But I get the following error :
$ target/debug/tch-test
target/debug/tch-test: error while loading shared libraries: libtorch_cuda.so: cannot open shared object file: No such file or directory

I know this is not the advised version of cuda (11.8 instead of 11.7) so I tried another solution, with micromamba ( wrapper for conda, much faster ) :
$ micromamba create -n pytorch220_cuda117
$ micromamba activate pytorch220_cuda117
(pytorch220_cuda117) $ micromamba install pytorch==2.2.0 pytorch-cuda=11.7 torchvision -c pytorch -c nvidia -c anaconda
then:
export LIBTORCH=/home/user/micromamba/envs/pytorch220_cuda117/lib/python3.11/site-packages/torch
export LIBTORCH_LIB=/home/user/micromamba/envs/pytorch220_cuda117/lib/python3.11/site-packages/torch/
export LIBTORCH_INCLUDE=/home/user/micromamba/envs/pytorch220_cuda117/lib/python3.11/site-packages/torch/
export LIBTORCH_BYPASS_VERSION_CHECK=1
export LIBTORCH_USE_PYTORCH=1
and $ target/debug/tch-test
Setting LIBTORCH_USE_PYTORCH=1 was necessary to compile, but activating or not the conda environment was not.
I manage to compile, but I get the same error:
target/debug/tch-test: error while loading shared libraries: libtorch_cuda.so: cannot open shared object file: No such file or directory

As well, before going to the console, I tried a third (first actually) way through vscodium, and my usual environment, with pytorch/cuda versions 2.1.2.post303 + cuda 12.0, and get the very same error.
Did I miss something obvious ? Can someone please advises ? Thanks in advance.

With the first of your two solutions you probably want to try setting LD_LIBRARY_PATH to the directory that contains this libtorch_cuda.so this is not important when compiling but when running the compiled binary.

Thank for your quick reply.
I went further in the investigation following your advise, and it works, thanks.
For the records, here are the steps I followed. The pytorch.org / .zip solution worked, but not the conda one.
Working solution: libtorch from pytorch.org (libtorch 2.2.0 + cuda 11.8)
Download libtorch from pytorch.org, unzip it in your favorite location, and record the 'libtorch' folder path (to your home for instance):
$ wget https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.2.0%2Bcu118.zip
$ unzip libtorch-cxx11-abi-shared-with-deps-2.2.0%2Bcu118.zip -d /home/user
In the following lines, you need to replace '/home/user/libtorch' with the actual location where you unzipped the files to.
If you unzipped to your home, you should see these folders and files for instance :
/home/user/libtorch/lib
/home/user/libtorch/include
/home/user/libtorch/lib/libtorch.so
/home/user/libtorch/lib/libtorch_cuda.so

After unzipping, export env variables, compile, and test:
$ export LIBTORCH="/home/user/libtorch"
$ export LIBTORCH_LIB="$LIBTORCH"
$ export LIBTORCH_INCLUDE="$LIBTORCH"
$ export LIBTORCH_BYPASS_VERSION_CHECK=1    # We installed cuda 11.8 whereas the tchis expecting 11.7
$ export LD_LIBRARY_PATH="$LIBTORCH/lib"

Checks:
$ find "$LIBTORCH" | grep libtorch.so
$ find "$LIBTORCH" | grep libtorch_cuda.so
$ find "$LD_LIBRARY_PATH" | grep libtorch_cuda.so

Compilation and test:
$ cargo build
$ target/debug/tch-test

The program runs. In order to make it work permanently, as always, you need to add the 5 export lines at the end of your .bashrc
If you update the version of libtorch, you may need to recompile your tch rust programs. Otherwise, as when you launch them, the dynamicly loaded librairies may have mismatched version from the building-time used ones and you may get weird error message (missing file sth) at running time (happened to me).
Other test (not working) : libtorch from conda (libtorch 2.2.0 + cuda 11.8)
It may be out of scope at this point, but I tried to go through conda, without success. I don't need to get a solution as the .zip seems to work fine.
But I provide the tests I followed, in case anyone want to dig further. I would still be interested. Otherwise I will wait for the next version of pytorch-gpu.
So, where to find, in conda, the required files (among others) for tch-rs: libtorch.so and libtorch_cuda.so, with version 2.2.0 ?
I tested 3 possible packages: pytorch-gpu, pytorch-cuda or simply pytorch.

'pytorch-gpu' is currently built up to 2.1.2 on conda-forge ; not the right version for tch -> Next package !
conda search pytorch-gpu -c pytorch -c conda-forge
pytorch-gpu                    2.1.2 cuda120py38h6767744_301  conda-forge
conda search pytorch-gpu -c pytorch
pytorch-gpu                    1.3.1               0  pkgs/main

Surprisingly, 'pytorch-cuda' does not seem to provide libtorch_cuda.so (I guess I did sth wrong, but where -see below- ?). -> Next !

$ micromamba create -n pytorch220_cuda117
$ micromamba activate pytorch220_cuda117
$ micromamba install pytorch==2.2.0 pytorch-cuda=11.7 torchvision -c pytorch -c nvidia -c anaconda

$ find /home/user/micromamba/envs/pytorch220_cuda117/lib/ | grep libtorch.so$
gives:
/home/user/micromamba/envs/pytorch220_cuda117/lib/python3.11/site-packages/torch/lib/libtorch.so
but
find /home/user/micromamba/envs/pytorch220_cuda117/lib/ | grep libtorch_cuda.so$
returns blank (!!)

Third package test: 'pytorch' package, with specific cuda-enabled build:

$ conda search pytorch -c pytorch | grep 2.2.0 | grep cuda
py3.10_cuda11.8_cudnn8.7.0_0
py3.10_cuda12.1_cudnn8.9.2_0
$ micromamba search pytorch -c pytorch | grep 2.2.0 | grep cuda
py3.9_cuda12.1_cudnn8.9.2_0
(The 2 commands unexpectedly give different outputs, but at this point, I am ready to hear anything.)
Checked python version:
$ python --version
Python 3.10.9
Then installed the package proposed by conda, using micromamba:
$ micromamba create -n pytorch220_cuda118
$ micromamba activate pytorch220_cuda118
$ micromamba install pytorch=2.2.0=py3.10_cuda11.8_cudnn8.7.0_0 torchvision -c pytorch -c nvidia -c anaconda

(The 3 repos specs are required)
In that case, the libtorch path is:
/home/user/micromamba/envs/pytorch220_cuda118/lib/python3.10/site-packages/torch
I exported the 5 environment variables, following the working solution above.
But then, when I  $ cargo build, I get the error:
$ cargo build
   Compiling torch-sys v0.15.0
   Compiling tch v0.15.0
   Compiling tch-test v0.1.0 (/home/user/Bureau/Bureau2/workarea/test_tch/tch-test)
error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/user/micromamba/env...
...
...(very long lines or line*)
...
.../user/micromamba/envs/pytorch220_cuda118/lib/python3.10/site-packages/torch/include/ATen/core/function_schema_inl.h:337: undefined reference to `c10::detail::torchCheckFail(char const*, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
          collect2: error: ld returned 1 exit status

  = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-link-lib)

error: could not compile `tch-test` (bin "tch-test") due to 1 previous error

Anyway, I will stick to the .zip solution until pytorch-gpu from conda-forge publishes a package with the 2.2.0 torch version..

Dear Laurent,
Just to thank you again for your quick help. I managed to go through my (holiday) project involving tch-rs :
https://github.com/v-espitalier/Raytracer-tch-rs
Best Regards,
Vincent.


Choose nonterminal ordering to put linking nonterminals first

Use heuristic in Nederhof and Satta (2008) to classify nonterminals into linking and non-linking
In multi.multi_solve, order of visiting nonterminals should put linking nonterminals first (I think)

Theoretically this should improve performance.

@ziyunma may take a look at this.


Fixed missing Content-Type header

A correct Content-Type header was not provided when showing the Access
Denied page.
When used in environments with X-Content-Type-Options: nosniff, the
browser would simple show the HTML of the page

Thanks!


emacs-webkit

Package request.
Would be fine to have emacs-webkit packet an a NixOS derivation because of python/qt dependencies.
@bendlas @ttuegel

From glancing at the package, it looks like it comes with its own python script, that just imports its dependecies from PYTHONPATH.
It could live in pkgs/applications/editors/emacs/emacs-modes/webkit/default.nix and be defined by buildPythonPackage, right?

well, probably there should be two packages: python part and elisp part.
python part may be included into derivation of elisp part, it's good because of encapsulation.
But on other hand elisp better to install locally (to ~/.emacs.d/...). So if user use e.g. el-get to manage elisp packages, it wold better to avoid duplication, and install just python part system-wide, and elisp locally.

No, the .el should live together with its .py file in a package. The .el finds its .py relative to itself, so the source should just be copied verbatim into $out/share/emacs/.
In addition we need emacs to set environment variables, before it activates that mode. That is a PYTHON variable, which should point to a python to a python binary, as well as its PYTHONPATH extended with pyqt et al
The logic to assemble PYTHONPATH is usually accessed via buildPythonPackage. Maybe @ttuegel can comment on how this is expected to work within emacsWithPackages.
For testing locally, you can nix-env -iA the appropriate dependencies, then loading the mode into emacs should just work.

I think this is also the reason why anaconda-mode doesn't work for me:
Traceback (most recent call last):
  File "<string>", line 3, in <module>
ImportError: No module named pkg_resources
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ImportError: No module named pip

I tried to add those packages (e.g. pythonPackages.pip and pythonPackages.setuptools) to my system profile and/or the emacsWithPackages derivation but it still doesn't work for me.

Correction to my previous statement: Installing python packages to your profile will not set PYTHONPATH. Instead you should define your dev-environment as a derivation and nix-shell into it.
We might consider having emacsWithPackages pick up shell hooks in a generic way, since emacs is, in fact, a shell. For python this would facilitate a complete reuse of https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/python-modules/generic/wrap.sh, which would put us in a good place compatibility-wise and possibly solve the same problem for other language environments, but it might lead to a lot of complexity and unforseeable bugs.
An alternative would be to have emacsWithPackages add (setenv "PYTHONPATH" ..) and similar clauses to site-start.el, on a per-package basis, which would have only a local impact and facilitate custom fixes, but create more maintenance burden and lead to duplicate logic, that could get out of sync.

I suggest you use python.withPackages that creates a Python environment with the packages that you need (like pyqt5) through python.buildEnv, and then add this derivation to the propagatedBuildInputs of your package. If you then patch the shebangs, the shebangs of the Python scripts will point to the interpreter that is in the environment.

@FRidh You mean putting a custom python version to the propagatedBuildInputs of the emacs derivation? But wouldn't that mean you have to build Emacs on your own? (no binary cache)

@jgeerds I mean python.withPackages(ps: with ps; [ python dependencies of emacs-webkit ]) where ps is the Python package set.
Before, people would use PYTHONPATH to make Python libraries available but this is a better method.

Off topic: @jgeerds: the easiest way to get anaconda up and running (at least these days) is to run emacs from a nix-shell exposing the required dependencies. This works for me nix-shell -p python2 python2Packages.setuptools --command emacs. Seems like anaconda mode uses setuptools not only to install the server, but also to check if it is installed (this has changed over time) so you have to start emacs this way every time.


Hide Hot Wallet

The user can go into wallet settings and decide to hide it.
If there is balance there is a warning modal. Else it is hidden.
User can go into App Settings and simply do show all.
With this all wallets are shown once the user confirms the login pin.
Reference Tribe wallet

fixed


Refactoring for optional

Pull Request Checklist
Please confirm that you've done the following when opening a new pull request:

[ ] For fixes and other improvements, please reference the GitHub issue that your change addresses.
[ ] For fixes, optimizations and new features, please add an entry to the CHANGES.md file.
[ ] Run mvn compile before committing, so that the auto-code formatter will format your changes consistently with the rest of the project.

@J-N-K we dont release Java-HAP that often, so I wanted to use this opportunity and have added few more HomeKit accessories. but im done for now.
remaining HomeKit accessories make mainly sense in combination with other services.
for this we would need to port this PR https://github.com/hap-java/HAP-Java/pull/105


fix backward compatibility issues with django 3.0

Codecov Report

Merging #256 into master will decrease coverage by 0.54%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #256      +/-   ##
==========================================
- Coverage   82.45%   81.90%   -0.55%
==========================================
  Files          19       19
  Lines         513      514       +1
==========================================
- Hits          423      421       -2
- Misses         90       93       +3

Impacted Files
Coverage Δ

src/auditlog/filters.py
91.66% <ø> (ø)

src/auditlog/middleware.py
66.66% <100.00%> (ø)

src/auditlog/models.py
83.51% <100.00%> (+0.09%)
:arrow_up:

src/auditlog/registry.py
86.27% <100.00%> (ø)

src/auditlog/compat.py
71.42% <0.00%> (-14.29%)
:arrow_down:

src/auditlog/mixins.py
73.33% <0.00%> (-3.34%)
:arrow_down:

Continue to review full report at Codecov.

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

@rossi1 but should update python-dateutil or set >= because of other dependencies.

@jjkester could you review this PR, thanks in advance.

I have decided to go ahead with #257 to drop all unsupported Python versions, saves the trouble of using six.
Nevertheless, thanks for the effort of creating a PR.

I have decided to go ahead with #257 to drop all unsupported Python versions, saves the trouble of using six.
Nevertheless, thanks for the effort of creating a PR.

Sounds good, I'll close the PR now.

Closed, as Django 3.0 support has been added in master. Release 1.0a1 is available. Python 2 is no longer supported, as it has been deprecated for a long time and support finally ended this January.


Cursor jumps around were I don't want it to go.

So I checked the other # I was given to find a fix and there is none. Maybe someone after a year can fix the problem so they don't have to keep moderating the same issue after a year. there is no fix that I saw after I went back and checked where I was told to go.

@fatbacker
Thank you for reporting this issue.
This is a standard message notifying you that this issue appears to be very similar to issue #7847, so I am closing it as a duplicate.


Cosmos DB: Distributed Tracing support

Reference PR for azidentity: https://github.com/Azure/azure-sdk-for-go/pull/21885/files

For interacting with an OTel provider use azotel (has example using Jaeger).

I also want this!


Extensions not recognizing custom tables

I am trying to make an extension that moves data from old custom tables into new tables created by extensions.
I am going to make an upgrade codeunit to do that.
However, I cannot declare a variable with reference to table 50.000 (The old custom table).
Are there any tricks to do so?

Have you tried this?
https://docs.microsoft.com/en-us/dynamics-nav/developer/devenv-running-cside-and-al-side-by-side

Yes I did try that.
But maybe not in the right sequence.
It works now, thanks.


Send Attack Information from Foundry to Discord

Could you make it possible to send attacks/spells from foundry to discord?
Also in the Mod Configuration Settings for this mod, can you add an option to turn this feature on and off?

I support the request of this as well! I would assume if attacks can happen, any other card could too? Like ability checks, damage rolls etc?


Firebase admin / Appengine timeouts

Hi,
We are using Firebase Admin to send messages from AppEngine. All works fine most of the time... however every now and then all Firebase calls start timing out (we wait for 20 seconds max). The calls are being made on a B2 class (configured for max 2 instances) which is fed data via task queue. During normal operation each call takes about 100-150ms. If we kill the instance everything starts working OK until next time. This was tested on 5.5.0 and also 5.4.0. Most of the calls are updateChildrenAsync(). What's also weird is that timeouts happen only on one of the two database shards (we are sharding databases within a single project) we use.
We can reproduce the problem by submitting 1000 jobs (in the end one job calls one updateChildrenAsync() (each job starts an operation and waits for it to complete). So under load it start to timeout.
Because of that we increased max instances to 5 and changed the class to B4... seems to work fine now.
I cannot explain to myself why this is happening... Even with limited resources there should be no timeouts ... AppEngine should limit the rate at which the task queue is being processed - it won't flood one instance over its limits.
So, if someone could explain why this is happening (is Firebase's thread model messing up AppEngine in a negative way?) Is it just that Firebase needs stronger instances? Are there any special considerations when running Firebase on AppEngine? Are there any risks of leaking resources (e.g. threads)?
I apologize because I can't describe the problem in more detail. Any hints on the matter are appreciated.

This is too vague to even attempt  to decipher. Can you please share some more details -- ideally including:

Java code for FirebaseApp initialization and database access
appengine-web.xml
Error logs demonstrating the problem

Yeah, sorry for the bad report... Here's the info if it helps.
Initialization... it's a static initializer per instance, each instance can accesses multiple databases within a single project):
           try {
                FirebaseOptions options = new FirebaseOptions.Builder()
                        .setCredentials( GoogleCredentials.fromStream( ResourceLoader.getResourceAsStream( firebaseProjectConfiguration.getServiceAccountPath() ) ) )
                        .setDatabaseUrl( databaseUrl )
                        .build();

                FirebaseApp.initializeApp( options, projectDatabase );

            } catch( IOException e ) {
                log.error( "Could not bootstrap Firebase!", e );
                throw new UnexpectedException( "Could not bootstrap Firebase!" );
            }

appengine_web.xml:
<runtime>${appengine.runtime}</runtime>
<url-stream-handler>${appengine.urlStreamHandler}</url-stream-handler>

<instance-class>${firebase.instance-class}</instance-class>
<basic-scaling>
    <max-instances>${firebase.max-instances}</max-instances>
    <idle-timeout>10m</idle-timeout>
</basic-scaling>

example code:
    DatabaseReference mDatabase = getDatabaseReference( firebaseProjectId );
    String key = mDatabase.child( path ).push().getKey();

    LinkedHashMap<String, Object> childUpdates = new LinkedHashMap<>();

    entry.put( jsTag_firebaseEntriesBase_timestamp, ServerValue.TIMESTAMP );
    childUpdates.put( path + "/" + key, entry );

    ApiFuture<Void> request = mDatabase.updateChildrenAsync( childUpdates );
    try {
        request.get( FirebaseConfigurationsHelper.FIREBASE_ADD_ENTRY_TIMEOUT_DEFAULT_SECONDS, TimeUnit.SECONDS );
        Metrics.log( FIREBASE_UPDATE_CHILDREN_ASYNC_OK );
    } catch( InterruptedException e ) {
        log.error( "updateChildrenAsync interrupted!", e );
        Metrics.log( FIREBASE_UPDATE_CHILDREN_ASYNC_INTERRUPTED );
    } catch( ExecutionException e ) {
        log.error( "updateChildrenAsync error!", e );
        Metrics.log( FIREBASE_UPDATE_CHILDREN_ASYNC_ERROR );
    } catch( TimeoutException e ) {
        log.error( "updateChildrenAsync timed out!", e );
        Metrics.log( FIREBASE_UPDATE_CHILDREN_ASYNC_TIMEOUT );
    }

BTW: I had code that was starting an operation (like updateChildrenAsync) and was not waiting for it to complete. Could this mess up the instance or do threads cleanup automatically when exiting the handler?

@samodadela thanks for providing the additional info.
I don't see anything obviously wrong with the code (although I cannot rule it out either, since I can only see a small portion of your app). However, one issue you might be running into is the background thread limit (10) enforced by App Engine. Each database client spawns 4-5 threads, so 2 database instances bring you awfully close to that limit. The behavior once you hit that limit is anybody's guess.
I would recommend you to try this on App Engine's java8 runtime. Use a custom ThreadManager when initializing FirebaseApp, and specifically avoid using App Engine's background thread factory. See if this yields better results.
You can also enable debug logging in your existing deployments, and see if anything interesting shows up in the logs.

@hiranya911 actually production will use 4 shards - i.e. 4 databases... guess I'm over limit already ;(
We do use java8 so I guess I can look into the ThreadManager... do you have an example using ThreadManager? We go live in the next few days so I will see first hand what happens after reaching the limit ;)

@samodadela try the following as a starting point:
static class BasicScalingThreadManager extends ThreadManager {

    @Override
    protected ExecutorService getExecutor(@NonNull FirebaseApp firebaseApp) {
      // Use a single-threaded executor which keeps threads alive for 1 minute.
      return new ThreadPoolExecutor(0, 1,
          60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>(), getThreadFactory());
    }

    @Override
    protected void releaseExecutor(@NonNull FirebaseApp firebaseApp,
        @NonNull ExecutorService executorService) {
      executorService.shutdownNow();
    }

    @Override
    protected ThreadFactory getThreadFactory() {
      // This thread factory will be used by all database-related code.
      return Executors.defaultThreadFactory();
    }
}

@hiranya911 you said:

Each database client spawns 4-5 threads, so 2 database instances bring you awfully close to that limit.

What do you mean by database client? Is it 4-5 per database OR per firebase operation?
The docs say that for java8 the limit is 50 threads... does that mean I'm good for 50/5 = 10 databases?

4-5 threads per database (i.e. instance of FirebaseDatabase).
The 50 limit is for the "request threads". I'm not sure if the long-running threads spawned by the Admin SDK count against that quota. Without the custom ThreadManager they count against the background thread quota, which is only 10.

OK, thanks. One more question, please. Should I use the same instance of ThreadManager for all initializeApp() calls or does each one get it's own?

You should be able to use the same instance across multiple apps.
But I'm surprised that you're using multiple apps. Can you please elaborate a bit on that. Why is it necessary to use multiple app instances?

You mean multiple databases? We are sharding on multiple Firebase databases withing a single Firebase project - according to DAU calculations a single database will not be able to handle all the load.
We did consider (by suggestion from google) Firestore where the limits are much higher. It even promises that sharding is not required... however in it's current status (beta) the limits are still there and we did not get a quote on when the beta will end.
We use Firebase for our chat functionality. The rooms are distributed across databases - we don't have a need for users of one room to interact with users of another (on another db).

My question is more about why do you need to call FirebaseApp.initializeApp() multiple times. You should be able to access multiple database instances from the same app, by calling FirebaseDatabase.getInstance(String url).
I would rather call initializeApp() once globally (possibly via a ServletContextListener), and then use that single global instance for all database calls. If you were starting/stopping multiple apps dynamically, that could also explain some of the weirdness you've seen.

You're right... it was because initially we were sharding projects - so the code was handling different projects and we totally forgot about it.
Thank you very much. You've just cut down my thread count ;)

Note that it will still spawn 4-5 threads per FirebaseDatabase instance. But each FirebaseApp instance also starts at least one background thread (for proactive OAuth2 token refresh). So based on this, I think you were definitely bumping into the GAE thread limit earlier, and that was probably the most likely cause of the issue.
If we are right, custom ThreadManager combined with a single shared FirebaseApp instance should help alleviate the problem.

I just tried the custom ThreadManager and it doesn't work... not even one request went through. Hmm...
Can you tell me how to enable logging in Firebase Admin so that I can see what's going on? The gae instance started up (cold start after upload) and all request timed out.
What I did:
private static BasicScalingThreadManager basicScalingThreadManager = new BasicScalingThreadManager();

...
                  FirebaseOptions options = new FirebaseOptions.Builder()
                        .setCredentials( GoogleCredentials.fromStream( ResourceLoader.getResourceAsStream( firebaseProjectConfiguration.getServiceAccountPath() ) ) )
                        .setDatabaseUrl( databaseUrl )
                        .setThreadManager( basicScalingThreadManager )
                        .build();

                FirebaseApp.initializeApp( options, projectDatabase );

Make sure you're on java8 runtime, and the threadsafe option is enabled in your appengine-web.xml.
To enable debug logging, you need to package a logging.properties file with your app:
#logging.properties
.level = INFO
com.google.firebase.level=FINEST

Then in your appengine-web.xml:
 <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
        <property name="java.util.logging.SimpleFormatter.format" value="%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$-6s %2$s %5$s%6$s%n"/>
 </system-properties>

@hiranya911 we changed the code call initializeApp only once... however when I plug-in the custom ThreadManager all requests start failing. In the logs I see this:
com.google.firebase.database.logging.LogWrapper debug: Aborting transactions for path: /v1/dev/chat/5708697783238656/-L09NxBPgqOivQ71q7hM. Affected: /v1/dev/chat/5708697783238656/-L09NxBPgqOivQ71q7hM
com.google.firebase.database.logging.LogWrapper debug: pc_1 - Trying to fetch auth token
com.google.firebase.database.logging.LogWrapper debug: pc_1 - Error fetching token: com.google.apphosting.api.ApiProxy$CallNotFoundException: Can't make API call urlfetch.Fetch in a thread that is neither the original request thread nor a thread created by ThreadManager
com.google.firebase.database.logging.LogWrapper debug: pc_1 - Scheduling connection attempt
com.google.firebase.database.logging.LogWrapper debug: Scheduling retry in 12734ms

Because of a problem with java8, we had to add the following in appengine-web.xml:
<runtime>java8</runtime>
<url-stream-handler>urlfetch</url-stream-handler>

Most of the log entries don't display the error above. They just timeout waiting on the future.

I don't think you have reached the thread limits because GAE won't let you spawn new threads after limit was reached. It throws an exception for such cases with clear explanation of what happened.
It is more likely you are having a CPU problems then some requests are timing out due to heavy load. This would have happened with any RPC regardless if it is firebase or not.
Instead of having max max 5 B4 instances, try to setup max 10 B2 instances and monitor the CPU and number of instances. This will cost maximum what you are paying today but will be cheaper while in off peak.
On the above setup, if the problem is really CPU, the issue shouldn't be reproducible unless GAE has spaw 10 instances.

@nilsonpontello could be, though my problem is now with the ThreadManager and fetchUrl... nevertheless it's better if I initialize just one app for all it's databases. I'll test it by decreasing max instances and see what happens.

@samodadela The <runtime>java</runtime> option is required. But url-stream-handler is a workaround to a problem in GAE if I remember correct. I would expect it to be fixed in prod by now. In fact I have a couple of test java8 apps in GAE prod right now, which are working fine. Did you see this in the dev app server by any chance? If so I would recommend you to try <url-stream-handler>native</url-stream-handler>, which should work in both dev app server in prod.
@nilsonpontello When the background threads spawn other background threads, like in the case of Admin RTDB client, we have seen that sometimes things fail silently due to the GAE thread limit. So this is very much a plausible scenario. In fact since @samodadela was running multiple FirebaseApp and FirebaseDatabase instances, there's a high chance this was happening under the hood.

@hiranya911 I changed url-stream-handler to native, passed an instance of ThreadManager to initializeApp() (which is now called only once for all databases in the project) and flooded the server with requests. I did not get any timeouts waiting for Firebase like before - very nice.
The only errors I got are the following:

Request was aborted after waiting too long to attempt to service your request.
Request was aborted because all instances are busy executing other requests. If you are using manual or basic scaling, try increasing the number of instances for this version.

Those errors are expected and indicate that I should increase the number of instances. So this is what happens when GAE doesn't have enough resources to process the requests.
I tested with 5xB4 class and then lowered it to 2xB2... in both cases there were no pesky timeouts just the two errors above. The requests in the task queue were being processed as they should.
BTW: I also noticed that one instance can process 10 requests simultaneously. It's probably in correlation with the maximum number of threads GAE allows.
The only remaining thing is I have to check what's the status for the 'urlfetch' java8 workaround.
It would be nice if the findings in this issue make it into the documentation. I'd point out:

Only one initializeApp() per Firebase project even if it has multiple databases.
Explain GAE's threading limitation and workaround using ThreadManager (url-stream-handler = native)
Use GAE/java8
BasicScalingThreadManager could be a packaged with Firebase Admin - ready to use

@hiranya911 Thank you very much for your help! I certainly wouldn't have figured it out by myself.

Thank you @samodadela. I'm glad it worked out. It was a useful learning experience for us as well. I'll make sure the feedback you've provided are applied towards improving our documentation and APIs.

@hiranya911 some more info... the 'native' setting does not work on devserver so we went with 'urlfetch' without ThreadManager... after some time we started getting the timeouts again. I'll try again with 'native' and ThreadManager.

@hiranya911 another thing that could cause problems...
consider this code...
    SettableApiFuture<ValueHolder> future = SettableApiFuture.create();
    final Query mDatabase = FirebaseConfigurationsHelper.getDatabaseReference( firebaseProjectDatabase ).child( path );

    mDatabase.addListenerForSingleValueEvent( new ValueEventListener() {
        @Override
        public void onDataChange( DataSnapshot snapshot ) {

            ValueHolder value = new ValueHolder();
            value.value = snapshot.getValue();

            future.set( value );
        }

        @Override
        public void onCancelled( DatabaseError error ) {
            future.set( null );
        }
    } );

    ValueHolder value = null;

    try {
        value = future.get( FirebaseConfigurationsHelper.FIREBASE_GET_OBJECT_TIMEOUT_DEFAULT_SECONDS, TimeUnit.SECONDS );
    } catch ...

Notice that the future,get() has set a timeout... Maybe the problem is in that when the future times out, the operation does not cleanup its threads? If so... how can I set a timeout on the Firebase operation? I noticed that custom token minting has a get() with a timeout, but other operations don't.
The primary function of the future in this code is to wait for the operation to complete - otherwise when the function returns the operation is terminated.

In the above example, no additional threads get spawned, except for the fixed number of threads already alive in the database implementation. So there's nothing to clean up.
All Admin SDK methods return an ApiFuture at the moment, which has a get() method that takes a timeout.
Are you still having issues? Even after applying the custom ThreadManager?

The problem happened when running without ThreadManager. I'm now running with ThreadManager to see what happens.
You said:

All Admin SDK methods return an ApiFuture at the moment, which has a get() method that takes a timeout.

In the example above... where can I get a future?

@samodadela addListener methods don't return anything. Plus, the callbacks fire asynchronously. So you need to implement your own synchronization in this case using a SettableApiFuture as you've done above, or using a Semaphore.
If our earlier line of reasoning was correct, I would not expect your scenario to work without the custom ThreadManager. That's the fix we did -- it forces the SDK to not use GAE background threads. The url stream handler config is a workaround to a GAE problem.

@hiranya911 OK, thanks.
I'll keep monitoring the deployment with the custom ThreadManager and report back.

On a related note GAE Java7 runtime was just deprecated: https://cloud.google.com/appengine/docs/deprecations/java7
I think going forward the Admin SDK should only support the java8 runtime, which simplifies things quite a bit. For instance, we can now implement BasicScalingThreadManager is a built-in API and even make it the default.

Yesterday I did not manage to test under load, but I noticed that some operations were timing out. The future get() is set to wait 30 seconds. For example, this log entry timed out after 7ms (I timed it in the code):
     2017-12-14 08:38:57.469 CET
com.google.firebase.database.logging.LogWrapper debug: conn_579 - received data message: {r=1099, b={d=, s=ok}} (LogWrapper.java:104)
     2017-12-14 08:38:57.469 CET
com.google.firebase.database.logging.LogWrapper debug: pc_0 - m response: {d=, s=ok} (LogWrapper.java:104)
    2017-12-14 08:39:01.184 CET
com.google.firebase.database.logging.LogWrapper debug: ws_578 - Reset keepAlive. Remaining: 0 (LogWrapper.java:104)
    2017-12-14 08:39:19.471 CET
net.d.t.common.metrics.Metrics log: [firebase/updateChildrenAsync/timeout] (Metrics.java:221)
   2017-12-14 08:39:19.471 CET
net.d.t.server.util.firebase.FirebaseHelper$1 onDataChange: updateChildrenAsync timed out! (FirebaseHelper.java:251)
    java.util.concurrent.TimeoutException: Timed out waiting for Task
	at com.google.firebase.tasks.Tasks.await(Tasks.java:133)
	at com.google.firebase.internal.TaskToApiFuture.get(TaskToApiFuture.java:80)

Is this firebase timing out internally or some problem with the future? Are those timeouts normal? Do I need to handle such cases and possibly retry?
The code is like this:
                // public static int FIREBASE_ADD_ENTRY_TIMEOUT_DEFAULT_SECONDS = 30;

                ApiFuture<Void> request = mDatabase.updateChildrenAsync( childUpdates );
                try {
                    request.get( FirebaseConfigurationsHelper.FIREBASE_ADD_ENTRY_TIMEOUT_DEFAULT_SECONDS, TimeUnit.SECONDS );
                } catch( InterruptedException e ) {
                    log.error( "updateChildrenAsync interrupted!", e );
                } catch( ExecutionException e ) {
                    log.error( "updateChildrenAsync error!", e );
                } catch( TimeoutException e ) {
                    log.error( "updateChildrenAsync timed out!", e );
                }

Also - please explain what the "Remaining:" entry in the Firebase log means.
Note:

That there was absolutely no load when this happened.
I'm using 5.6.0

@samodadela are you saying that the Future which should have waited for 30 seconds, timed out only after 7 milliseconds? That sounds like a bug, and we can look into it. How exactly did you measure this? Can you share a code snippet with your timer instrumentation?
The Remaining: is an entry periodically logged by the WebSocket connection's idle checker. That doesn't impact you.

It would also be useful to know what your load conditions are. How many concurrent requests, how many update operations, size of an update etc.
I've been running the following test case on my workstation. It runs 32 concurrent threads, each submitting 1000 writes. This completes under a minute, without any errors.
  @Test
  public void testLoad() throws Exception {
    final int workers = 32;

    ExecutorService exec = Executors.newFixedThreadPool(workers);
    final FirebaseDatabase database = FirebaseDatabase.getInstance(
        IntegrationTestUtils.ensureDefaultApp());
    List<Future> futures = new ArrayList<>();

    // Start workers
    for (int i = 0; i < workers; i++) {
      final int id = i;
      Future f = exec.submit(new Runnable() {
        @Override
        public void run() {
          // Each worker submits 1000 updates sequentially.
          for (int iter = 0; iter < 1000; iter++) {
            DatabaseReference reference = database.getReference("load_child_" + id);
            Map<String, Object> children = ImmutableMap.<String, Object>of("child", System.nanoTime());
            try {
              reference.updateChildrenAsync(children).get();
              System.out.println("Completed " + id + " " + iter);
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }
      });
      futures.add(f);
    }

    // Wait for all workers to finish.
    for (Future f : futures) {
      f.get();
    }
  }

@hiranya911 about that 7ms timeout - ignore it... I misread the log... I'm having a hard time following the logs... I don't understand why the logs start with com.google.firebase, though I log my message as soon as I'm in the handler (I call firebase later). Really weird... I'll get back when I'm clear what's happening. Am I seeing the log entries from those 5 Firebase threads?
BTW: I'm now running with ThreadManager and apart some rare timeouts (maybe I'm sending too much data?)  everything works nice.

You seem to have enabled debug logging for the Admin SDK, so it is producing a lot more log entries than usual. Initializing FirebaseApp and FirebaseDatabase would spawn the database threads, which will start logging immediately. You can adjust the log level in your logging.properties.

Yeah, thanks - my bad... the reason why I couldn't understand the log is because I was filtering on Errors, but the log in question was split in multiple entries. I was looking at the entry where the error happened and was thinking it was the start of the log.
I have a few questions regarding the do's/don't so on Firebase:

I counting the number of user on a certain database. Coming from AppEngine I implemented the counter as sharded. So I have /myShardedCounter/01, /myShardedCounter/02... To increment the counter I randomly choose a shard (01, 02) and increment its value in a transaction. This should lessen contention on the counter in case of many writers. Is sharding even needed on Firebase or could I just have one key (/myCounter)?
Does the depth of the path affect the speed of operation? Is there a significant difference in speed when accessing /abcdef or /a/b/c/d/e? Should I flatten all paths? I'm just interested in shallow depths - I won't create paths with 100 parts. I like the database to have a nice structure instead of having everything crammed up in /.

Sharding sounds like the right thing to do in this case -- assuming you have many concurrent writers. Some developers have also proposed other solutions (example) for similar problems using Cloud Functions. I would defer this to @mikelehen and @schmidt-sebastian to see if there's a better answer.
Flat data models are generally preferred over deeply nested models (see the best practices guide). There's a cap of 32 on how deep you can nest data in Firebase. Also whenever you retrieve a node you also end up loading all of its child nodes, which is not desirable for large databases.

You should also revisit Firestore at some point, which addresses these concerns better IMO.

@hiranya911 Apropos logging... I enabled firebase logging and my logs seem to be mixed up... I'm looking at a log for one operation, but the entries seem to be from another. Can you confirm that I'm seeing a mix of logs from the thread that is processing the request as well as logs from other (firebase) threads? I'm not seeing a thread id  in the log so I don't know which log entry is from the request thread and which are from other threads. Are these the thread_id's: conn_1559, pc_2, ws_1559?
Also:

If I register a listener - do I have to remove it before returning/exiting the REST handler? It seems like listeners live on after the handler returns.
All threads in one app use the same app (initializeApp)... do they share also other stuff? I mean are all operations thread-safe or do I need to lock 'something'?

Status update:

overall behavior using one initializeApp for all databases and custom ThreadManager is good... the instance works and there are no more 'mass' timeouts (before this change the whole instances went bananas and I had to kill them manually)
still seeing some spurious timeouts... trying to figure out what's going on, but logs are not very useful

You can set a log pattern in the logging.properties to include a thread ID. But yes, by default logs will be intermingled. There's no way around it in Java.

If you register a listener using addValueEventListener() or addChildEventListener(), they will remain active until explicitly removed. You can use addListenerForSingleValueEvent() if you want the listener to fire only once.
No additional locking should be necessary. Within FirebaseDatabase everything is thread safe.

@hiranya911 We finally got rid of all the timeouts. The problem was in some code that was deleting old chat entries. Because logging is messed up the error was showing also in other requests and made troubleshooting difficult it seemed like there's a general problem with all Firebase calls.
The problem with the deletion code was that we were registering a listener within a listener. The inner listener was never called and was always timing out. If you know why, please explain. We changed the code to work without nesting listeners and now it works correctly.
One more thing regarding threads. We run all the Firebase stuff in manual scaled B* instances (task queues) except the custom auth token minting. This runs on autoscaled F* instances. This is needed so that the user gets the token ASAP without having to call the BE twice. Are there any special considerations regarding threads? Should we initializeApp() use ThreadManager in autoscaled F* instances, too?

All Firebase database events fire on a single thread (aka EventTarget). Therefore if you add a listener within a listener, and then wait/block until that inner listener fires, it will naturally cause a deadlock -- which will inevitably result in a timeout (since you are blocking the thread that is supposed to fire the inner event listener). In general you should never block or run expensive computations in database event listeners. You should spawn new threads for such tasks as needed.

Not sure why you're getting a rejected execution exception. Haven't seen that in any of my testing. Do you have a repro?


don't hang tests off title attribute

The title attribute is being phased out so tests must hang off other
elements. Likewise, remove the delete-confirmation tests because we
don't have reliable elements to hang them off. Really. You can click the
delete-confirmation button, but the toast messages don't have unique or
predictable IDs (because you can show more than one at a time) and we
don't want to rely on some translated field. So anyway, no more delete
confirmation tests.
Refs STCOM-296

Close/reopen to force a rebuild in Jenkins. The failure was due to a misconfiguration, since patched, in the latest React release.

yarn run v1.9.4
$ eslint .
/home/jenkins/workspace/folio-org/ui-organization/PR-163/test/ui-testing/locations.js
193:1  error  Expected indentation of 6 spaces but found 0  indent
✖ 1 problem (1 error, 0 warnings)
1 error and 0 warnings potentially fixable with the --fix option.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


Improve performance

Changes
The use of an array is not suited for the job. An hash set is far better.
This PR drastically reduces the complexity of the algorithm from O(n^2) to O(n)
@nelsonic @indexzero @zixia @soyuka

@nelsonic ?

Closing in favour of https://github.com/simonepri/pidtree

Hi @nelsonic, no problem.
We discussed it here:
https://github.com/indexzero/ps-tree/issues/30

Cherry-picked into #35 – sorry for the delay in getting back to you on all this good work @simonepri. If you'd like to discuss merging pidtree back into ps-tree please lmk.


[Feature] Script Commands Store - Install Package

Script Commands Store - New Feature
Description
In this pull request, I'm submitting a new feature to the Script Commands Store which as requested by users:

Install all the Script Commands available in one specific package
Delete folders if they are empty after delete Script Commands in one group

Also, thanks to Konstantin Andrianov, now we have a very nice extension icon which reflects much much more what is being done in the extension.
Last but not least, the images used on the README was moved to a different folder to avoid be embedded in the package bundle, which will reduce dramatically the extension bundle size.
Type of change

Improvement for my extension

Screencast

https://user-images.githubusercontent.com/83694/146467460-234255c2-93a3-4dac-bcb4-48490d31f3ad.mp4
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing

Awesome correction @unnamedd 🔥
Tested all the new and already implemented features, and it works as expected – Good job 💪


Update one more ref image after recent raw change

I updated this slightly -- also eliminating 3 of the reference output samples for the "raw" test that don't appear to be used anymore (corresponding to platform + libraw version combinations that are no longer in our CI matrix).


Fix error when choose noon on time picker

When using the TimePicker and set alwaysUse24HourFormat as false after choosing noon it shows 00:00 PM which is wrong, you can see more details in my previous PR that was closed.
The time selected is fixed, now the user can choose noon and devs don't have to add extra code to show 12:00 PM when they are not using 24 hours format.
Testing was added to time_test.dart nothing else was changed.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

This PR seems to be causing a breakage in the tree. cc @darrenaustin

@Arkangel12 thanks again for this PR. As you can see above, there was a hiccup in the automated tests that made it look like this broke the build. It didn't, as the test was unrelated to this commit. However, I had reverted it until I could figure out what was going on.
That said, as I was prepping to re-land this, I realized that I am not sure what this is fixing exactly. The test that was added will pass without the changes to hourOfPeriod. TimeOfDay.format handles the noon case for both 24hr and 12hr time.
What exactly was the issue you were trying to solve here? Can you open a new issue with a reproducible case of what you are trying to fix?

Hello, @darrenaustin  you can find more details in here.
This is an easy enhancement, basically, when you choose noon instead of showing you 12:00 pm it sent you 00:00 pm which is not right, that's it.
i actually fix this in my code using and extension method because this makes no sense for the user, and I send the PR with the fix. that's it.
Please let me know if you find if this is wrong or if it can be improved, happy to help.

So sorry I haven't been able to get back to this. I understand where my confusion came from. The issue has nothing to due with TImePicker, as it appears to be working fine. The issue was only with TimeOfDay. I have just landed a fix for that with PR #83947. Thanks again for your effort here and sorry for the confusion.


Error getting card data for 1484900, please report this!

See title.
Script aborts due to error.

Thank you for the report! New version that should fix those errors for good is almost ready, ETA: next few days (if nothing goes wrong).

Thank you for the report! New version that should fix those errors for good is almost ready, ETA: next few days (if nothing goes wrong).

New error: Error getting card data for 1498570, please report this!
Well, it's the same error, just a different card, I guess, so I'm not opening a new issue. Thank you for your work!

Should be resolved with #14


Ruamel update

ruamel.yaml, which is used for the yaml parsing in cwlgen, will not install under python 3.7 because of an error in its setup.py.
This PR moves to the newest version of ruamel.yaml, (0.15.87) which does install okay.  The changes made to ruamel in that time do not seem to affect cwlgen, since they only modify cases where a YAML object is created, which is not done here.
The tests all still pass on my machine.
Cheers,
Joe

I've had similar problems when playing with my fork and found that CWLTool uses ruamel.yaml >= 0.12.4, <= 0.15.77, it would be cool to sync these up or at least expand the range given they should both generate compatible yaml.
In a previous discussion about CWLTool updating specifically ruamel.yaml, they note the ruamel team recommends pinning to <0.15 for API changes to ruamel, but that CWLTool branch has been merged in.
That being said, the ruamel documentation still recommends:

This is the new (0.15+) interface for ruamel.yaml, it is still in the process of being fleshed out. Please pin your dependency to ruamel.yaml<0.15 for production software.


Add new, edit old entries in docs/design and docs/Help for milestone 0.6

Pushed to remote master.  Closing.


[5.5] Add the batch number to migrate:status command

Add the batch number to migrate:status command

This is good; I always end up opening up migration table and inspecting batch integer.

Changes interface on a patch release so can't put it on 5.5.

@Mohamed-Elwan send it to master.

I've create a new PR #21391 sending to master


Parameter "url" support also with http?://

Parameter "url" support also with http?:// [16592074]
Submitted by Binyamin on 10-10-2016 0:00:00
1 votes on UserVoice prior to migration
I propose to allow parameter "url" support also http:// and https://, there are many reasons for it.

more consistent API with similar services
http and https may respond different results, for example https://a.b/kitties.jpg may return cats image and http://a.b/kitties.jpg error/fallback image or error 404, or else
when defined https://... would reduce the server-side loop - wouldn't try check http:// before trying https:// (for example domain might support only https)
I am fine with to continue to support "url" value without protocol (maybe as a backwards compatibility).

Response
by Andries Louw Wolthuizen on 11-10-2016 0:00:00
As stated on the frontpage, SSL and HTTP is already supported since january 2013: https://github.com/andrieslouw/imagesweserv/issues/33
The API is inconsistent to prevent UBB-parsers to fail on the double http://-part. For that reason we use ssl:.
More detailed answer on your questions:

See answer above.
Yes, sadly, in many cases we tested, HTTPS is wildly different from HTTP. Looking for both increases the parsing time needed to fetch the requested image. Also, for us it doesn’t make sense to always fetch over HTTPS, it’ll only increase lag, and won’t add any security (we could be considered to be a middle-man, and we would only protect against additional middle-mans between our datacenter, and that of the origin. If there is such an attack, SSL wouldn’t help us.).
There is no server-side loop, see answer to 1. We only check http:// for ?url=, and only check https:// for ?url=ssl:…-requests.
And indeed, our system is already backwards-compatible for more than 8 years, so changing such a thing would be a real hassle.
To summarize: The only new thing in your suggestion is to replace ?url= for ?url=http:// and ?url=ssl: for ?url=https://. This is something we consider as being bad-practice, therefore it is declined.

Original UserVoice Submission

See https://github.com/andrieslouw/imagesweserv/issues/33


[Bug]: Example from documentation doesn't work

Version
27.4.3
Steps to reproduce

Clone https://github.com/paulhoule/demolition_man
npm install
npm test
see failure

Expected behavior
The example at the top https://jestjs.io/docs/27.x/mock-functions should work.
I added an expect() to my version that documents the wrong behavior,  if jest was working correctly it would fail at the first expect.
I expect jest to respect the implementation of the mock function that is,  the mock function is supposed to return 42 it really returns 42.  This works correctly outside the test but not inside the test
Actual behavior
Inside the test,  jest acts as if I did not add an implementation of the mock,  it always returns undefined.
Additional context
No response
Environment
System:
    OS: Windows 10 10.0.22621
    CPU: (32) x64 AMD Ryzen 9 7950X 16-Core Processor
  Binaries:
    Node: 18.16.0 - C:\Program Files\nodejs\node.EXE
    npm: 9.5.1 - C:\Program Files\nodejs\npm.CMD

It strikes me as pretty bad that a broken example in the documentation isn't being looked at.

The example is not broken and it works as expected. You modified it in the reproduction. Hence the code of the reproduction is not working, not the example.


Warning about 32-bit PHP, will this be an issue?

First of all, this is an amazing project. Thank you so much for sharing this solution!
I recently got this warning message:

It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read the documentation page about this ↗.

Will this be an issue, and if yes, how can I update to 64-bit PHP?

Hi @ogressel
The docker-compose file uses the linuxserver/nextcloud:latest image to build the nextcloud container. This should pull the correct image for your architecture.
I guess the hardware you are using has a 32-bit architecture. I think Nextcloud just performs better on x86-64 architectures.
The worst thing that could happen is, that Nextcloud drops support for 32-bit arch (not sure if they plan to).
Good news, all your files are stored outside of the container (/share/Docker/nextcloud/data). So if Nextcloud (or linuxserver) drops support for 32-bit arch and you are not recieving updates for you Nextcloud instance, you should be able to get the data and migrate to another hardware.

Thanks for your reply. It appears 32-bit support for NextCloud will indeed run out with the next major version. I am so used to everything being x86_64 that I did not realize my QNAP hardware was not.


Devtoberfest 2021 - Submit project to Devtoberfest GitHub

Hi Thomas,
Could you please to let me know how and when the badge of activity "Submit project to Devtoberfest GitHub" will be visible in my SCN ID?
My SCN ID:  tinh.toquang

We had not planned to grant those until the end of the event. However the response has been incredible - more submissions than last year even though it isn't the primary focus of this years contest. Therefore we might do a badge upload at the mid-point next week as well.


Make sidebar search field work

Extend the search page to have the ability to react to query parameters. The search in the sidebar now navigates to the search page and passes the query parameter. The search box on the search page is now debounced.
Closes #3341
Hey, I just made a Pull Request!

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

LGTM, happy you moved the SidebarSearch into the search plugin. Thanks a lot, let's 🚢 it!