PR-logs-fixes

[X] npm run test succeeds.
[X] npm run lint succeeds.
[ ] Appropriate changes to README are included in PR.

Incremental subset of changes from PR #313
Changes

commands

clasp logs

Print logs in ascending order
Prints first 255 chars of jsonPayload to avoid unmatched .fields.message.stringValue property bug
Fixed severity colorization, add WARNING
User prompt for project ID is default behaviour if missing from .clasp.json project settings file (clasp logs --setup n/a; README was not updated for this PR)

utils

Moved user prompt for project ID to its own util function

test

Test clasp logs function: --setup is now default behaviour

Added a few more requested changes.

I reviewed https://github.com/google/clasp/commit/d60b33f4537e1085a939b4d9ecb9f658946f348e. I'm not sure why this PR has 0 files changed.
I suggest we finish the PRs with one final change that I can merge. Just let me know which one is the final one.

@grant I'll commit the review changes to open PR-auth-reorg instead (focus is on login/logout/auth) so PR-logs-fixes can be closed.


Hey, it's kind of a website!

@vokal/webandsystems HAY GUYZ I MADE A WEBSITE SORT OF.
Anyone wanna take a look at this and tell me exactly how dumb I'm being about doing this? Lots of library stuff, since it all has to be local for extensions.

 Given you are probably mostly just trying to get this working here, that may not be your top priority. But that is how we usually deal with all the library junk.

Yeah, I would have just committed all the lib stuff first, and then actual code second.

But before my scroll buffer broke, everything LGTM.

@foresmac I solemnly swear I will open a seperate pull when I get around to adding chart.js tomorrow.

@designatednerd Sounds like a plan. Might have @jrit show you how to user bower for this stuff, though, makes things pretty tight.

OK, merging this on @foresmac's LGTM.


defined smtpd_restriction_classes not used anywhere; lines can be deleted

The definition in the following lines
https://github.com/bokysan/docker-postfix/blob/ed09d86c8d2970b43224b1ea99e0d2ca9c7e803e/run.sh#L140-L141
is not used at all, so these could be deleted.
Or am I missing something?

I don't know, I'm going through the Postfix documentation now and trying to understand exactly if it can be really removed or not. If you have any detailed insight, that would be most helpful.

Checked, tested and removed in the latest commit.


Cannot import uncompiled library into a service worker

I'm trying to move the bandwidth estimation component to a service worker, then pass a reference to the bandwidth estimator object to the webpage app via postMessage(). However, goog.require() does not find the exported classes.
This example service worker:
importScripts('third_party/closure/goog/base.js', 'shaka-player.uncompiled.js');

var estimator;

self.addEventListener('install', function(event) {
    estimator = new shaka.util.EWMABandwidthEstimator();
    console.log('Service worker installed with estimator:', estimator);
});

produces the following error in the log:
base.js:413    goog.require could not find: shaka.player.DashVideoSource
This is the first call to goog.require in the uncompiled script, and if you remove it you get the same error for the next call, so let's assume that none of the classes are being loaded.
Importing the compiled version works fine seeing as it's a single script with no dependencies, but this is obviously difficult to develop with. What needs to be done in order to import the necessary classes and their dependencies into a service worker?

We have not done any work with ServiceWorkers, but I have some guesses about what might cause such a problem. Let me explain a few things about how Closure works in uncompiled mode.
You have to load 'third_party/closure/goog/base.js' before you can goog.require anything.  goog.require (as used in shaka-player.uncompiled.js and elsewhere) is implemented in goog/base.js.  It loads scripts by adding a script tag to the document (through goog.writeScripts_, goog.importScript_, and goog.writeScriptTag_).
The first script it loads is the dependency map (third_party/closure/goog/deps.js) which is created by build/gendeps.sh or build/all.sh.  If that deps map does not exist, goog.require will be unable to locate the required class.  So first, just check to make sure you have the deps map, and if not, run build/gendeps.sh.
The other thing that might cause you problems is if goog.writeScriptTag_ can't function inside a ServiceWorker.  It calls document.write(''), which I expect is not doable from a ServiceWorker.  If this is the problem, you can tell the closure loader to use a different method by setting the global variable CLOSURE_IMPORT_SCRIPT to a function that takes a path name and returns true if it succeeds.  This could probably be mapped to importScripts.  For example:
// Must be defined on the same global object used by goog/base.js, so don't use var:
this.CLOSURE_IMPORT_SCRIPT = function(path) {
  importScripts(path);
  return true;
};

importScripts('third_party/closure/goog/base.js', 'shaka-player.uncompiled.js');

Let me know if any of these things is helpful.

Yes, the service worker has no DOM access so it makes sense that document.write() has no effect. Opening a debug terminal for any random service worker and entering document.write('') gives the error Uncaught ReferenceError: document is not defined(…).
I'll try your CLOSURE_IMPORT_SCRIPT solution tomorrow an report back.

Using the suggested code raises an explicit DOMException instead of failing to install the classes ;)
For now I'll use the compiled version.

Can you provide details on the DOMException so that we can better document the failure here?  Perhaps that might be of use to someone who wants to tackle this issue in future.

The full log is:
GET https://webserver.com:3000/deps.js net::ERR_INVALID_RESPONSE    deps.js:1
Uncaught [object DOMException]                           service_worker.js:13

Ah, I see.  goog.findBasePath_ also accesses document to locate base.js and construct deps.js relative to that.
Try this:
this.CLOSURE_BASE_PATH = '/third_party/closure/goog/';
this.CLOSURE_IMPORT_SCRIPT = function(path) {
  importScripts(path);
  return true;
};
importScripts('third_party/closure/goog/base.js', 'shaka-player.uncompiled.js');

This fails with the error message
ajax_request.js:379 Uncaught (in promise) Error: Network failure (…)shaka.util.AjaxRequest.createError_ @ ajax_request.js:379shaka.util.AjaxRequest.onError_ @ ajax_request.js:473
ajax_request.js:379 Uncaught (in promise) Error: Network failure.(…)shaka.util.AjaxRequest.createError_ @ ajax_request.js:379shaka.util.AjaxRequest.onError_ @ ajax_request.js:473
smallapp.js:8 ServiceWorker registration failed:  DOMException: Failed to register a ServiceWorker: ServiceWorker script evaluation failed

The line it crashes on is importScripts('third_party/closure/goog/base.js', 'shaka-player.uncompiled.js');. I assume the issue this time is that ajax requests are not available in the ServiceWorker.

That could be.  I don't have any experience with ServiceWorkers, and we have never made it an explicit goal to run Shaka in a ServiceWorker.  I can't say if this is even feasible.

Ok, well anyhow it seems more likely that the issue is with closure rather than shaka. As I said before, the compiled version works with no issues, so let's not worry too much. I'll close.


You have a nil object when you didn't expect it

http://localhost:3000/auth/instagram/callback?code=32035b5b16fe4f27beedb733bf7fe6fa
I have the callback setup to http://localhost:3000/auth/instagram/callback
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.+
I have other oauth providers working, this issue is only with instagram.
On Omniauth 0.3.0.rc3, Rails 3.1.0
Any help ?

Same error using Rails 3.1, but I went and attempted to fix it.
Here's my blog post about what I did: http://breakthebit.org/post/11700738504/fixing-nomethoderror-with-the-instagram-strategy-and
Here's my commit that fixed it: https://github.com/mihar/omniauth/commit/8e6f527864072d930aed4ef8997dafc96c953745


fix(renderer): Makes position.save() from render_tree a lower priority

This fixes some issues when several events trigger render_tree, and you open/browse a lot of files and directories.
A race condition happens when a position is saved but never restored.
I'm not super happy with the addition of another conditional. Suggestions are always welcomed.
Fixes: #1310

Thanks for tackling this. I get the general concept but could use more details.
Could you explain what position save are overwritable vs what is not and what are the sequence of events that caused you to make these choices?

Sure,

We need to save and restore the position in render_tree because of the changes in https://github.com/neovim/neovim/pull/24824.

We also need to save the position when we close neo-tree's window in case the user runs :Neotree show (without follow_current_file). That's what my PR #1288 meant to fix. We can rely on the fact that because of 1), render_tree will restore the position, but we don't want the M.position.save() from inside render_tree to overwrite the M.position.save() from when we close the window, that's why the guard clause was added.

Those are the 2 happy paths I was dealing with.
However, there is a race condition that it's difficult for me to detect in my machine. It appears that two events (vim_buffer_enter and vim_buffer_added, but I'm not entirely sure) trigger render_tree concurrently, and one tries to save the save position but can't. The problem is that we don't restore it and thus, we don't reset the position with nil. And now, the next open/expand command in neo-tree window will restore the window to a stale position.
I've considered using a queue here, but out-of-order messages would cause the same problem.
Since saving the position in render_tree is actually a workaround for a neovim behavior and not a feature, we can overwrite it if there's another part of the code that wants to save a position.
TL;DR:
M.position.save() from render_tree is always overwritable. In other places, it shouldn't be.
Thoughts?

@georgeguimaraes I'm able to periodically trigger this race condition still while browsing around in neo-tree. I do think it's happening less frequently than before but still present

Back to the drawing board, then. I'll try another approach.
Thanks, @mehalter and @XavierChanth, for trying it.

Back to the drawing board, then. I'll try another approach. Thanks, @mehalter and @XavierChanth, for trying it.

Thanks, feel free to ping me as a tester

Back to the drawing board, then. I'll try another approach.
Thanks, @mehalter and @XavierChanth, for trying it.

No problem at all! Thanks so much for spending time on this @georgeguimaraes 😊

@mehalter Could you give me some examples of this problem?
I'm doing a big rewrite and I might be able to deal with async updates of tree using mutex from nvim-nio (i.e. semaphore(1)).

@pysan3 wow that discussion thread looks amazing, and I am super excited to see what you put together! I'll be honest and say I don't fully understand the saving/restoring procedure happening here, like why it is necessary or why there is a race condition. At least no more than the incredible comment description above by @georgeguimaraes (https://github.com/nvim-neo-tree/neo-tree.nvim/pull/1354#issuecomment-1943755175) . They might be able to explain better/more in detail if you need that.
Where I am producing the issue with when using the hjkl based navigation code proposed in this discussion thread: https://github.com/nvim-neo-tree/neo-tree.nvim/discussions/163
There is a minimal repro.lua file in a comment in the linked issue above (https://github.com/nvim-neo-tree/neo-tree.nvim/issues/1310#issuecomment-1895833654). Don't worry about the comment saying that it doesn't reproduce the issue, it does. The weird part is because it's a race condition it is relatively non-deterministic on whether or not the behavior appears and when. But when havingating using only the hjkl navigation opening files and opening/closing directories specifically with the h and l keys will sometimes mess up where the cursor location in neo-tree gets placed. There is a video of this behavior linked in the original issue as well that might be clearer than my explanation 😅
When replicating, I basically just frantically move about the file system using hjkl in neo-tree and see if it randomly jumps to a previously opened directory. Sorry if this isn't super great replication instructions 😞 Let me know if you have any questions that I can try and clear up!
Let me know if you want any help testing/working on your new refactor!

Oh I missed the video link. Your explanation is awesome.
So, in the video, I believe this tree is opened with reveal=true, so the expected behavior would be;

expand event/ -> cursor stays on event
go back to the left window -> neo-tree focus goes back to layout.tsx
reenter neo-tree -> cursor on layout.tsx
move down to event/
close event/ -> cursor stays at event

right?
I believe the original video is more of an issue with :Neotree show + follow file vs user manually expanding some other location.
And I think your issue is that if you expand two different directories simultaneously (or just move the cursor after commanding an expand but before it completes the rerender), the cursor goes back to the first directory, where you would want the cursor to be on the final location and don't mess with my cursor right?
@mehalter

So the video is not showing any issues with the open file following the cursor actually. It is showing that the user moved the cursor down in the neo-tree window, presses l to open the directory now under the cursor (with the custom binding), and upon opening the directory their cursor was ("restored") moved up to a previous location rather than staying in the newly open directory.
Here is the video I was referring to from the issue just in case there may have been another one somewhere that maybe wasn't correct (error happens between second 4 and 5): https://photos.onedrive.com/share/F80D48919F327BE9!32352?cid=F80D48919F327BE9&resId=F80D48919F327BE9!32352&authkey=!AI-hSiBNabNE5j4&ithint=video&e=IeXjS9
It appears this is happening because of some stale saved information which "restores" the cursor but because it is stale it restores it to a previous, incorrect location.

Sorry I updated my comment. I was too late ig?

(cursor pos after follow file will be remembered, but when user comes into neo-tree window and move the cursor manually, that change in position is not captured (which should be force updated right before keybind is executed, but is not) and on the next rerender, cursor goes back to the current file) (but this explanation is old, it should be fixed by whatever PR that I don't remember).

What you are trying to fix is more of a race condition thing right?

And I think your issue is that if you expand two different directories simultaneously (or just move the cursor after commanding an expand but before it completes the rerender), the cursor goes back to the first directory, where you would want the cursor to be on the final location and don't mess with my cursor right?

I think the video bug can be reproduced even when done slowly.

yeah, the race condition is not because 2 actions are being taken. It's just inherent in the code. It's not a race condition because the user is moving too quickly

the bug in the video is the one that this PR is trying to fix and doesn't. I reproduce it by navigating frantically just to increase the number of operations I am doing so I don't spend a long time trying to reproduce the bug 😅 I may have communicated this poorly. It isn't dependent on how fast the user is moving, just how much time they want to spend trying to move, open directories, close them, move, etc. But the speed of the user is not a part of the issue :D

The main thing is the behavior in the video doesn't happen 100% of the time. It happens non-deterministically. So there aren't a set of steps I can give you to reproduce the bug 100% of the time. I couldn't give you like a set of hjkl operations that if you did within a time frame would reproduce the bug. It's like, it could happen the first time you open and close a directory, it could happen the 100th time you open and close a directory

Huh, that's weird.
What is the command when opening neo-tree? what is reveal? show? focus?

ok maybe I should just clear this up because I think you think this bug is related to the cursor following the open file. But it is completely unrelated. One sec. I will do a recording

Thanks a lot. Sorry to bother your time...

@pysan3 my issue is slightly different than @mehalter but it seems to be related. I was able to reproduce consistently, but only for the first folder opened each time I toggle.
Updated my message above with the full config + the specific keybind / command I was using. Note that I put my config in a toggle block since it is quite long.

@pysan3  https://asciinema.org/a/TRr73ID4EOsEQ38IQJfquGV9v
This video shows that I opened neo-tree with :Neotree. That is the only neo-tree command issued. After that I was only navigating with h,j,k,l and between windows with <C-w>h and <C-w>l.
Also No worries at all! I am sorry it is hard to explain, especially because I'm also not 100% certain on my own understanding of the issue 😅
It also might be important to note that this is the commit that introduces the race condition: https://github.com/nvim-neo-tree/neo-tree.nvim/pull/1288. Before this, there is no issue at all.

Thank you guys that is awesome @XavierChanth @mehalter
@XavierChanth
However I can't see your cursor in asciinema and I can't quite follow what you are doing. Could you give me instructions (keybinds)?
@mehalter
Ok I was able to reproduce, but only when config.filesystem.follow_current_file.enabled = true which is not in repro.lua in the old comment. Am I right?

@pysan3 I can reproduce this without the follow_current_file enabled: https://asciinema.org/a/wECW01iEk1zmnZHlNf7tJX1rM

repro.lua
```lua
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")
-- set stdpaths to use .repro
for , name in ipairs({ "config", "data", "state", "cache" }) do
vim.env[("XDG%s_HOME"):format(name:upper())] = root .. "/" .. name
end
-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
end
vim.opt.runtimepath:prepend(lazypath)
-- install plugins
local plugins = {
"folke/tokyonight.nvim",
-- add any other plugins here
}
local neotree_config = {
"nvim-neo-tree/neo-tree.nvim",
dependencies = { "MunifTanjim/nui.nvim", "nvim-tree/nvim-web-devicons", "nvim-lua/plenary.nvim" },
cmd = { "Neotree" },
keys = {
{ "e", "Neotree" }, -- change or remove this line if relevant.
},
opts = {
log_level = "trace",
log_to_file = "/tmp/neotree-repro.log",
filesystem = {
filtered_items = {
visible = true,
show_hidden_count = true,
hide_dotfiles = false,
hide_gitignored = true,
hide_by_name = {
-- '.git',
-- '.DS_Store',
-- 'thumbs.db',
},
never_show = {},
},
window = {
mappings = {
h = function(state)
local node = state.tree:get_node()
if (node.type == "directory" or node:has_children()) and node:is_expanded() then
state.commands.toggle_node(state)
else
require("neo-tree.ui.renderer").focus_node(state, node:get_parent_id())
end
end,
l = function(state)
local node = state.tree:get_node()
if node.type == "directory" or node:has_children() then
if not node:is_expanded() then -- if unexpanded, expand
state.commands.toggle_node(state)
else -- if expanded and has children, seleect the next child
require("neo-tree.ui.renderer").focus_node(state, node:get_child_ids()[1])
end
else -- if not a directory just open it
state.commands.open(state)
end
end,
},
},
},
window = {
position = "right",
},
},
}
table.insert(plugins, neotree_config)
require("lazy").setup(plugins, {
root = root .. "/plugins",
})
vim.cmd.colorscheme("tokyonight")
-- add anything else here

</details>

@pysan3 here is a replication using purely just the repro.lua given by csiekel in this comment: https://github.com/nvim-neo-tree/neo-tree.nvim/issues/1310#issuecomment-1895833654
https://asciinema.org/a/GHLL4T2FKwq4MJhGyYpmf72JK
So this doesn't even use changes in my implementation of the l command.

@georgeguimaraes while making these recordings I did find that I can replicate this issue 100% of the time actually!
Steps (with repro.lua from here: https://github.com/nvim-neo-tree/neo-tree.nvim/issues/1310#issuecomment-1895833654):

nvim - open Neovim
:Neotree - open neo-tree
Open a directory with l
<C-w>h - switch to the other window
<C-w>l - switch back into the neo-tree sidebar
Navigate to another closed directory and run l
See that the cursor jumps to the wrong location

https://asciinema.org/a/PGmF1DoW1X36FVbz1Ps0ATNzB

Also worth noting the above steps reproduce the bug even with this PR

@mehalter Oh you are right. I'm now on the same page.
And now I understand why you added save(..., overwritable) and that it doesn't solve the issue kekw.
OK, let me try to tackle the problem ;)

Hey @mehalter, could you test my fix? I think this should solve the issue.
https://github.com/pysan3/neo-tree.nvim/tree/update-curpos-before-expand
{
  "pysan3/neo-tree.nvim",
  branch = "update-curpos-before-expand",
  version = false,

I had to re-add BufDelete aucmd since user must force close neo-tree with :q or :bd.
Since the block was added to not overwrite saved position, we now need to be exactly sure that previous position must be restored and set to nil before when we really want to save (otherwise, there will be a position remaining when you really want to save the position).
Man it's pretty difficult to explain in words...
(that's why I'm on a rewrite to make the code a lot cleaner)

I'll wait for either @georgeguimaraes or @XavierChanth or any other person that previously had this issue, and if you give me a go, I'll make a PR.
You know that I didn't have this issue before so I can't test it with my workflow / config options lol.

However I can't see your cursor in asciinema and I can't quite follow what you are doing. Could you give me instructions (keybinds)?

Sorry, I didn't realize that was the case. I'll test your branch right now, and if I still have this issue then I'll rerecord and explain.

I'll wait for either @georgeguimaraes or @XavierChanth or any other person that previously had this issue, and if you give me a go, I'll make a PR.

Seems to be less reproducible, but still happening...
https://asciinema.org/a/idz4OwuEX6TteaZK7NkpfSxjZ
My cursor only seems to jump when I toggle open a folder. In both of my recordings, I'm using +e to toggle neotree opened / closed.
Im using j/k to navigate vertically in neotree, and I'm using  to  toggle the directories opened/closed.
It doesn't seem to happen when I close directories, only open them.
In the recording, you see me often toggle directories closed, then toggle neotree open and closed. For me, the issue is only reproducible right after toggling neotree open, and it seems to only jump on the first directory toggled open after opening neotree (so I have to close directories and neotree to reset again).

Thanks mate!
Ok let me dig into the problem. It'll probably be in the weekends and I'll make a PR when I'm done.

Closing because I think this was fixed by #1355, let me know if that's wrong.


Fix Mixed Reality nspkg

The Mixed Reality nspkg appears to be incomplete. This attempts to fix it.

Turns out we were doing it "correct". So no changes necessary.


Hi, I want to reference your result in a table. What abstraction should I use?

Thanks for your interest in our work.  You could call it PMPNet.

Thanks.


Sample annotation file

Can you share a sample annotation file used for training ICDAR 19 (Track B2 Modern) table structure recognition model? It would be a great help for everyone!

You can find a link in 7. Datasets (section in Readme.md file). We have uploaded all the datasets, annotations and models in that drive.


Microsecond resolution for timestamps

Hello,
I'm interested in implementing higher resolution for timestamps, specifically microsecond.
For someone with a lot of C and C++ experience, how significant of an effort would this be to do it the right way, i.e. in a way that might be acceptable as a PR?

I think that would not be terribly complex - timestamps are not used in that many test cases and we do not have any backwards compatibility to maintain yet for storage. We would be happy to see a PR for this, but first we should do some bikeshedding ;)
For timestamps, currently we store these composed of a date and a time. I then propose we move to storing them as microseconds since the unix epoch as (signed) int64_t. For microseconds, we need to store<PHONE_NUMBER>0 microseconds per day, which means we can store the years 1970±292471.
If we were to move to nanoseconds, we could store the years 1970±292. This I think is too restrictive. So for 64-bits, microseconds seems reasonable.
The years 1970±292471 are slightly more restrictive than our current DATE type (which goes from -5867411 to 5867411), but I believe that those extra years are not very relevant and we can simply do a bounds check on inserting dates for the years that fit inside a timestamp. We can do that by changing YEAR_MAX and YEAR_MIN in src/common/types/date.cpp.
We then also need to take care that the TIME type should support microseconds as well, to prevent any inconsistencies. Since the microseconds for a single day require 37~ bits to store, we need to upgrade the TIME type. I suggest changing this to an int64_t as well for simplicity. This will waste some bytes; but those can later be recovered through compression again.
The parts that need to be changed to move to this new timestamp format are then:

The timestamp code in src/common/types/timestamp.cpp
The time code in src/common/types/time.cpp
Any conversion code in the R/Python connectors (I can help with this if you need any help)

This is now implemented


Lua scripting help

Describe your problem here.
Basically im trying to detect if the current player character has invalid animation named "doesnotexist". I've tried to do it and here's what I tried.
function onCreate()
local placeholder = 'doesnotexist'
if not getProperty('boyfriend.animOffsets.exists', placeholder) then
debugPrint('animation:'+ placeholder + 'does not exist!')
end
end

After running the code nothing happens!
I know that this is the wrong way to use getproperty. I also getPropertyFromGroup and getPropertyFromClass to help me but it gave me no luck(or I used them wrong aswell).
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
No. Just the base engine compiled with lua stuff.

u can't call functions lol

Is there a way to create a lua function with thoseconditions above?

Is there a way to create a lua function with thoseconditions above?

yes
function doesnotexist()
local placeholder = 'doesnotexist'
if not getProperty('boyfriend.animOffsets.exists', placeholder) then
debugPrint('animation:'+ placeholder + 'does not exist!')
end
end

like put it in its own function then call it like this
function onUpdate(elapsed)
doesnotexist();
end

The problem is that this line getProperty('boyfriend.animOffsets.exists', placeholder) is not valid. Im trying to find a way to make this line into a function. So i can check if a animation exists in the character sprite. The script i put above is just a debug script whoch I don't know how to write properly. (sorry if I sound mean or anythin.)

i mean, you can't call exists like that because this is a haxe function. you can't call haxe functions in lua.

i mean, you can't call exists like that because this is a haxe function. you can't call haxe functions in lua.

Yes you're correct. I tried to play around with the variable with true and false ad it just deleted the object I set false to. I'll just remove this from my script as its only used for convenience purposes. As its a script that adds miss sprites to sprites which don't have them.


[Feature] Implements some spill components [stage-1]

What type of PR is this：

[ ] BugFix
[x] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

For #17541
stage-1 for https://github.com/StarRocks/starrocks/pull/16380
This PR mainly defines some core interfaces for the spill component
Spiller::spill(); // spill chunk data to disk
Spiller::restore(); // restore chunk data from disk

SpillFormater // the spilled file format definition.

SpillerPathProvider // SpillFile path provider. we could spill our data to any dedia

SpilledMemTable // This component is the intermediate buffer for our spill data, which may be ordered or unordered, depending on the requirements of the upper layer

SpilledInputStream // This is a basic abstraction of reading spilled data.

Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto backported to target branch

[ ] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

There many new classes, please add some brief comments to describe the purpose.

run starrocks_admit_test

run starrocks_admit_test


Board Review: Azure Communication Services (SPOOL) - Calling SDK user facing diagnostics (UFDs) (JS)

Thank you for submitting this review request. Thorough review of your client library ensures that your APIs are consistent with the guidelines and the consumers of your client library have a consistently good experience when using Azure.
The Architecture Board reviews Track 2 libraries only. If your library does not meet this requirement, please reach out to Architecture Board before creating the issue.
Please reference our review process guidelines to understand what is being asked for in the issue template.
To ensure consistency, all Tier-1 languages (C#, TypeScript, Java, Python) will generally be reviewed together.  In expansive libraries, we will pair dynamic languages (Python, TypeScript) together, and strongly typed languages (C#, Java) together in separate meetings.
For Tier-2 languages (C, C++, Go, Android, iOS), the review will be on an as-needed basis.
Before submitting, ensure you adjust the title of the issue appropriately.
Note that the required material must be included before a meeting can be scheduled.
Contacts and Timeline

Responsible service team:
Main contacts:
Expected code complete date:
Expected release date:

About the Service

Link to documentation introducing/describing the service:
Link to the service REST APIs:
Link to GitHub issue for previous review sessions, if applicable:

About the client library

Name of the client library:
Languages for this review:

Artifacts required (per language)
Please read through “API Review” section here to understand how these artifacts are generated. It is critical that these artifacts are present and are in the right format. If not, the language architects cannot review them with the SDK Team’s API review tool.
.NET

APIView Link:
Link to Champion Scenarios/Quickstart samples:

Java

APIView Link:
Link to Champion Scenarios/Quickstart samples:

Python

APIView Link:
Link to Champion Scenarios/Quickstart samples:

TypeScript

APIView Link:
Link to Champion Scenarios/Quickstart samples:

For all other languages, send a request to the Architecture Board to discuss the best format on individual basis.
Thank you!

UFDs Design and Usage doc: UFDs_Design_and_Usage.md
UFDs API view: https://apiview.dev/Assemblies/Review/9a67b94f720c4138845ecf5e8f0efac8?diffRevisionId=044bb64453a645f09a444757ce2adc11&doc=False&diffOnly=False#@skype/spool-sdk!NetworkDiagnosticChangedEventArgs:type

scheduled for 6/17

Recording[MS INTERNAL ONLY]


Analysis server has terminated

Steps to Reproduce

...
...
...

Logs

Closing as no information was provided. If you have a problem to report, please open a new issue and fill in the information requested in the template.


market creation needs to handle not valid numbers getting through in validations

@cillianhunter0 what should we do in this case? should "-0" throw an error or be turned to zero without telling the user?

is this fixed?

no. but seems like a minor issue.

@phoebemirman missed your ping on this.
Can we just limit the input to numbers and "." ?


UUID types will now map to strings when generating Go and Typescript client code

fix #4438

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Create an Empty SAPUI5 Project - Error when creating a project with FIORI Application generator

Hi.
I'm following the tutorial Create an Empty SAPUI5 Project forCreating an empty SAPUI5 Project in SAP Business Application Studio with SAP Fiori tools.
Every time I reach step 3, in which an empty project must be created, I run Fiori Application Generator, all the sub-steps are completed without any problems and therefore I click on Finish, then project generation starts but always ends showing up the following error:

The extension providing 'sap.ux.application.modeler.info' view is not capable of restoring it.
Want to help fix this? Please inform the extension developer to register a reviver.

Could anybody tell me the reason for this error and maybe how to avoid it in order to successfully create the project?
@IObert, @jmmargo
Kind regards,
Ale.

@nicoschoenteich this might be something for you :)

Hi @ALEJONO, sorry to see that you are having an issue. I have reached out to colleagues from the SAP Fiori tools Application Generator team to see if they can help answer your question.
Kind regards,
Conrad

Hi @ALEJONO,
There are known problems in some circumstances. Did you do as request in step "3: Create a new project"

First, you need to select the workspace for your project by choosing from menu File > Open Workspace and select projects folder.

before you generated the app? If not, that might cause this issue.
Cheers,
Klaus

Thank you for your feedback. We haven't heard from you in the past 30 days, so we are closing the issue.
If you still have questions, feel free to reopen the issue.


Initial commit

Hi @adaMiclos , @Raq-HEE
Completed NWPS-409 Inset Component. Please review it.

Test component is available on the following link
http://localhost:8080/site/patient-and-public-information/introduction


Changing props after mount should have an effect

Purpose
As a developer I expect changing a prop to have an effect, e.g. changing vertical from false to true would change the direction of the split.
Proposal
It's worth checking each prop to see if it's worthwhile supporting. Assuming it is then it might just be a case of re-initialising  the internal state appropriately. We can even stand to lose some information, e.g. pane sizes.
A key requirement would be not to cause any child components to remount.
Acceptance criteria

[ ] As a developer I can change at least one prop and see the change reflected in the rendered component.

I would like to be able to change the defaultSizes and have it relayout the pane sizes. I have some panes which are sometimes empty, sometimes not. I'm able to set their width correctly when the component loads, but after that I'm limited to using the reset method as documented in the storyboard stories, which doesn't take into account the defaultSizes prop.
I'm implementing something similar to the split view in the [https://codepen.io/](codepen.io editor), where each pane has a expanded and collapsed state.
I'm open to submitting a PR, but would appreciate any advice on how to approach it.

Hi @charles-stuart-appdetex. That's a great feature idea!
I'd add a new method, e.g. resize. Eventually, I want the component to behave either in a controlled or uncontrolled manner with respect to each prop. My plan is to have it be uncontrolled for defaultSizes, i.e. it takes on the value on mount but from then on the component manages this state.
The challenge is all about working out which methods on the SplitView class to call. Something similar to the way defaultSizes gets used in the constructor but rather than calling addView call resizeView. Note that the constructor also handles the case where the sizes don't sum up to the size of the container and distributes the sizes proportionately.
I'm hoping to spend some time this weekend catching up on issues and this is one I anticipate tackling if you want to hold off writing the PR.

That sounds great! I've really enjoyed using the component so far. It works really well. I used 'use-container-queries' to watch the width of the panels and track if they're "collapsed" or "open".

@charles-stuart-appdetex I've had an initial attempt with #121 with included story.
It adds a resize method which takes an array of numbers. I'd be interested in any early feedback.

Great, I'll check it out tomorrow. Thanks!

I'm looking at it now. The resize seems to mostly behave how I would expect it to. It seems like with defaultSizes that I can set a width to 0 and then it'll set the width of that pane to the minSize I've specified. Using the storyboard, if I set a minSize to 20 and then resize([0, 1]), it sets the first pane to a width greater than 20. I'd like it to set it to the minSize or 0 if there is no minSize set.
I could be wrong, but from my understanding it should always respect the minSize, and also the widths you specify are basically a ratio of how to allocate the available width.

Makes sense. I'll revisit at the weekend 👍. And thanks for the detailed feedback, it's appreciated.
I'm also considering adding a hide/show behaviour to panes. I've not thought it through yet but it could just be a prop on the pane, e.g. visible.

I've had a look into this and here's my attempt at explaining the current behaviour.
With no minSize or maxSize set then defaultSizes or resize() will behave as though the values are ratios (a bit like flexbox).
However, the values are very much treated as pixel dimensions. They get clamped between minSize and maxSize before performing any layout calculations. For example, [0,1] with minSize=100 will effectively become [100,100] which, assuming space is distributed evenly will give a 50% split.
This does suggest giving up on the idea that the values are in pixels and will always be treated as, basically, percentages. See Split.js size prop as an example.
I think this is the way to go but I want to see how it interacts with the functionality which would let you set a fixed pixel size for a pane. For example, a two pane layout, where the left pane is a fixed width.
I'll keep the resize() PR open and track progress there.
I'm also working on #137 which adds a visible prop to panes. Effectively giving them zero size.

Your explanation makes sense. I do think there are times where you might want to specify pixels values, ex: you want to collapse a panel to its minimized state, or, alternatively, if you want to open/expand a panel to a fixed to properly display content which is a fixed width.
On the other hand, it also definitely seems like you would want to be able to just tell it to divide up the available sizes based on a ratio, i.e. 33% for three, or 50% for one panel and 25% for two other panels if one panel needs more space.

I haven't forgotten about this issue, but I'm still not sure how to move it forwards 🤔.
It's not obvious to me how to reconcile percentages and absolute sizes and also respect min and max sizes and not be confusing to users. I'll try to come up with some ideas.

I can't seem to change the props for onChange.
If I dynamically add a new pane, I want to change the onChange function to be able to act on the new pane.
Currently the onChange function is saved on first render and any updates, or passing useCallback function won't update the internal onChange function.
So it's impossible to act on the new state.

Hi @benoist. Sorry I missed this! I've created #236 and will address. Thanks for reporting 👍

Hi @charles-stuart-appdetex. Thanks for the detailed information. I've added a preferredSize prop to panes which takes a percentage value. Should be straightforward to expand this to minSize and maxSize. Ultimately, the underlying VS Code implementation does describe something very flexbox like. Hopefully, I can expose all of that through the React interface eventually.

Hi @johnwalley,
Is it possible to have the onReset prop change too?
Thanks

Is there any update on this? I would like to conditionally change the props passed to Allotment.Pane, but the updated props doesn't re-render the pane, in my case, I would like to disable a pane conditional, so I need add the maxSize props conditionally. Any suggestions?
I also checked ref, but only Allotment provide resize, reset, Allotment.Pane doesn't provide anything.
A code sandbox example here

I have noticed this being an issue when changing the vertical prop. A workaround is to force the Allotment element to fully re-render whenever the vertical prop changes. A simple way to do this might be to set the key on the Allotment element to the same value as the vertical prop, e.g.
<Allotment key={vertical} vertical={vertical} />

This does mean that the state is fully reset when swapping between horizontal and vertical. I would not expect this method to work well for other props for this reason.
I think it would make sense for Allotment to be able to handle this case, though.


Add option to adjust verbosity level/precision; check log files as part of tests

This PR adds extra functionality to modify the verbosity and precision of the CallbackVerbose. It subsequently updates all log files, and then adds a test that checks the logfiles as part of the test targets / CI.
Hopefully the numerical results on CI aren't too different from our developer machines, otherwise we'd have to deactivate the test.

Thank you so much @wxmerkt !!!
This was very much needed for a long time ;)


Several of our customers are missing tons of possible errors/warnings in their apps

One possible solution would be to include an analysis_options file.  If we did that, ideally a rather aggressive one, possibly matching flutter's:
https://github.com/flutter/flutter/blob/master/.analysis_options
Currently we don't have one:
https://github.com/flutter/flutter/tree/master/packages/flutter_tools/templates/create
I learned that several of our customers don't have .analysis_options files and the default dartanalyzer is very loose, thus they are missing tons of possible errors/warnings in their apps.
@pq @Hixie @devoncarew

If we're comfortable with using flutter's, we could copy it into the newly created project as part of flutter create (copying and tweaking either the one in // or in //packages/flutter_tools).

👍   Adding this to flutter create makes sense to me.

We've been around this circle before.  The analysis options file we use ourselves for flutter is too strict for our customers.  For example, we require types to be used everywhere possible, which many customers don't like.
This bug is framed as a solution rather than stating a problem, so it's hard for me to know what other solution to propose.  @eseidelGoogle what is the problem you would like solved here?

My understanding is the old solution was that we enforced our styles from the package rather than the create template, but yes, we've definitely explored other points in this space before.
I learned that customer: fast didn't have any analysis options turned on when I had lunch with one of their engineers on Weds.  The problem they hit was they were having errors which dart could tell them about but wasn't, it seemed odd to me that we had set them up this way.

I like putting in a starter-recommendation for .analysis_options. I don't think we'll include every option that Flutter uses, but I'm sure there are a few lints that we would recommend.
Bonus: as @eseidelGoogle points out, the .analysis_options is a file under user control.
@eseidelGoogle do you happen to remember what our users should have seen in their editor? We could start an .analysis_options file with those lints turned on.

@eseidelGoogle @sethladd @johnmccutchan @devoncarew
Please look over the analysis_options in my PR which are a copy of the repo analsys_options. I can have flutter create copy them as part of project generation rather than a separate analysis_options template file as I have done, but I assumed (incorrectly?) that the project analysis_options will be different than the repo analysis_options.

I'm not sure I agree with the title of this issue.  It's difficult to propose alternate solutions because this issue is phrased as a solution (i.e., include an .analysis_options file) rather than as a problem that could potentially have other solutions (e.g., customer X was sad because they missed lint Y).

I changed the title, though more specifics would be useful indeed. @eseidelGoogle

Specifically, what I'd like to understand is whether the errors/warnings they are missing are specific to Flutter or would be valuable for Dart developers in general.  If they would be valuable to Dart developers in general, that might guide us towards a solution for Dart as a whole rather than a Flutter-only solution, as was previously proposed.

Based on the comments above, I'm leaning towards dropping https://github.com/flutter/flutter/pull/5573 in favor of:

updating the existing flutter_analysis_options which is already used by flutter analyze
update flutter analyze to use the .analysis_options in the project root if it exists
add a top level flutter_ide_analysis_options file similar to the flutter_analysis_options
update Atom and IJ to analyze with flutter_ide_analysis_options if an .analysis_options file is not present in the project root
document and encourage other flutter IDE integrators to do the same

Advantages:

all who use flutter analyze or a flutter IDE plugin get this functionality automatically
the .analysis_options file can be updated for all users when they upgrade their SDK
users can override by having their own .analysis_options file in their project root

This gets better analysis results to our customers today, enables us to update the analysis options for all users tomorrow, and decouples working with the analyzer team over time to perhaps turn on some of these options for all Dart customer as @abarth suggested.

Per conversation with @Hixie, the current plan is to update flutter analyze to have

2 modes: strict and not strict where https://github.com/flutter/flutter/pull/5679 represents the strict mode analysis options
flutter project analysis defaults to strict mode analysis
a flag to disable strict mode stored somewhere in the customer's project (in flutter.yaml or pubspec.yaml or ?... will talk with the Analyzer team)
when analyzing anything in the flutter repo, regardless of whether --flutter-repo flag is present, use the .analysis_options in the flutter repo root
when analyzing a customer's project, use the .analysis_options in the customer's project root if it exists

and longer term

work with the Dart analyzer team to update dartanalyzer with the necessary features so that eventually we can call it as a separate process rather than embedding the analyzer package
work with the Dart analyzer team so that analysis of flutter projects (e.g. using analysis server) uses our default analysis options if an .analysis_options file is not present in the project root
work with the Dart IJ plugin team to surface this less strict mode option so that user's can easily turn off

@eseidelGoogle @abarth and others... thoughts?

strict and not strict

I'm concerned about so many modes. Is strict == flutter_sdk_rules and not strict == ?? Maybe different names for the different presets.

a flag to disable strict mode stored somewhere in the customer's project

Why would a user need to opt-out of Flutter SDK's rules? Shouldn't the Flutter SDK opt in to their additional checks?

strict is not flutter_sdk_rules. flutter_sdk_rules is the rules in the .analysis_options file in the flutter repo root. (There's some complication to handle here with respect to the dartdoc lint, so that flutter analyze can report the count of that lint but IDEs don't complain about it. We could even enable the todo lint in the flutter analyze case and report that count too. And further to what @pq suggested earlier today, maybe also the count of // ignore'ed errors.)
strict is probably more like flutter_sdk_rules minus things like sort_constructors_first which are really just flutter style rules in lint form.
not strict is strict minus things like always_specify_types and annotate_overrides to make the language more attractive to people who care about specifying types.
Ideally, IDEs would offer to downgrade from strict to non-strict the first time they report a strict warning, if the user hasn't made a choice yet.

@sethladd and I spoke more about this today. Seth is concerned about us forcing out opinions on people, and about having multiple modes. We came up with the following alternative proposal:

There's a small number of sensible defaults that every Flutter dev should have turned on, e.g. valid_regexps.

New projects get a default minimal .analysis_options file, which does nothing but link to http://dart-lang.github.io/linter/lints/ and whatever other documentation exists for this file.

flutter analyze does the same as IDEs for a brand new project.

The project's .analysis_options file overlays the Flutter's defaults from item 1, it's not a wholesale replacement.

We can provide, in our documentation, a sample .analysis_options file that has things like always_specify_types, but we don't make it the default. The context would be "here are ways to opt in to even more checking that might make your code stronger". This is the only step that is really our opinion (an "editorial piece"). Maybe it just points to our SDK's .analysis_options.

It's not clear to me how well this addresses Eric's original bug report because I don't really know what errors Eric was talking about. It does take care of type-averse users, since by default it doesn't require types. It takes care of type-enamoured users (like us) since they can opt-in to whatever they want. It avoids the problem Adam mentioned in the PR about users falling off the train if we provide people a detailed .analysis_options file, since by default the .analysis_options file does nothing and anything they put there merely overlays on top of what we define as "sensible defaults".

Related (just FYI), stagehand is now creating a default (but commented out) .analysis_options: https://github.com/google/stagehand/pull/333

Updated bullet list above based upon conversation with @sethladd et al.

I'm not sure what (if anything) is more to do with this bug?

I'm still working on cleaning up flutter analyze, but no need to keep this bug open for that.


Write spec for performance tracing in Measure

Proposal
Event == Span

Introduce a timed event that encapsulates a specific piece of the overall transaction or flow.
Allow events to be nested, such that one event can be a child of another and so on.
Allow identifying events part of the same transaction.

Event type:timed

Add new fields to all events:

parent_id — the parent event this event is linked to.
trace_id — the trace this event is part of.
trace_name — the human readable name of the trace.

Add a new event type called timed.
Timed event data contains the following fields:

name — the name of the event, string.
start_time — the time at which this event started.
end_time  — the time at which the event ended.
duration — the duration of the event.

All attributes are added as part of user_defined_attributes.

{
  "id": "1c8a5e51-4d7d-4b2c-9be8-1abb31d38f90",
  "type": "timed", // <== new event type
  "session_id": "633a2fbc-a0d1-4912-a92f-9e43e72afbc6",
  "timestamp": "2023-08-24T14:51:41.000000534Z",   // <== continues to represent when the event was captured
  "user_triggered": false,
  "parent_id": "parent_id", // <== new field
  "trace_id": "trace_id", // <== new field
  "trace_name: "trace_name", <== new field
  "timed": {
    "name": "span_name",
    "start_time": "2023-08-24T14:51:41.000000534Z",
    "end_time": "2023-08-24T14:52:41.000000534Z",
    "duration": 1000,
  },
  "attributes": {
    // snip attributes fields
  },
  "user_defined_attributes": {
    // snip attributes fields
  },
  "attachments": {
    // snip attachment fields
  }
}

Public API
val onboardingSpan = Measure.spanBuilder("onboarding").startSpan() // automatically adds session span as parent
try {
    val loginSpan = Measure.spanBuilder("login")
        .setParent(onboardingSpan) // there are more complex ways to do this than passing the span in
        .startSpan()
    // some code here
    loginSpan.addAttribute()
    loginSpan.trackEvent()
    loginSpan.trackException()
    loginSpan.end()
} finally {
    onboardingSpan.end(Status.Ok)
}

Notice the arguments to createSpan. This will in future become a config where each span can have the following kind of auto-tracing options:

captureMethodTrace — captures an Android method trace and adds it as an attachment.
captureFrameMetrics — captures frame metrics for the duration of the span and adds it as an attribute.
cpuUsage — captures cpu usage before and after the span and adds it as an attribute.
freeMemory — tracks free memory before and after the span and adds it as an attribute.

The public API can use otel exposed by a thin Measure wrapper, while internally we capture and treat everything as an event.

Other things to consider:

Otel publishes conventional attributes for all languages. We should use the same convention to ensure easier interop. https://github.com/open-telemetry/semantic-conventions-java/tree/dd1d40c6be372bc73e203307d4a02c24c5ce89f2
Implement W3C trace context for trace ID propagation: https://www.w3.org/TR/trace-context/
Review usage of session_id, it can be treated as the trace ID for all other root spans automatically.

Current implementation only tracks spans when they end. However, we might not always be able to end a span,  specially for long running spans, like span which remains active for the entire duration of an activity being visible. We must come up with an approach which allows tracking in-progress spans which haven't ended yet.


Fix Behn bug that broke Clay

Clay expected responses to its timers to come back in the same order it sent them. So needy!
Now Behn actually does this.

The glorious refactor caused a bail:meme. Do not merge.

Works beautifully. Even on non-zod galaxies!
Thank you man! This is great.


api_key instead of access_token? And client.audio is also changed?

Did the API change?
Unlike in README, now it requires api_key instead of access_token?
Also, audio is not working?
require "openai"

client = OpenAI::Client.new(api_key: ENV["OPENAI_API_KEY"])

p client.audio

Gives:
❯ r spike.rb
spike.rb:5:in `<main>': undefined method `audio' for an instance of OpenAI::Client (NoMethodError)

p client.audio
        ^^^^^^

There's another gem called openai, could that be installed? If not, what version of ruby-openai are you using?

Yes! So sorry. I might have mistakenly installed it while trying to update the gem!

@jikkuatwork no problem, it happens a lot!

:)


Using node-dev?

Wouldn't using node-dev be better than using node-demon? I recently switched to it and it seems good.

Thanks @pyros2097 for your suggestion. I've never used node-dev before. However, based on my first glance, there are some critical issues such as

Don't set NODE_ENV
node-dev exits after restarting
Doesn't run on Win 7

I don't think we should switch to it, at least for now.

I'm going to close this issue for now. Please feel free to continue the discussion here if you had more question.


Jquery enqueues

Hi Simon:
First of all thank you for the BST family!... Best clean bootstrap themes out there!
I have been using BST and now I am adventuring to use WBST and Regarding JQuery enqueues:
I have noticed that BST:

First version: Own jquery + in header
Last: WP onboard jquery  (adds jquery-migrate)+ in header

But in WBST:

Own jquery + in footer

Can you please let me know which is the best option?
Thank you!
Daniel.

Hi Daniel,
I have not maintained BST or WBST for 2 years (I will not be updating them). These days I am working on B4ST (for Bootstrap 4) https://github.com/SimonPadbury/b4st
For BST/WBST I think it is best to use the WP onboard jQuery, because it is and already available to you within the WordPress Core. (I see lots of tutorials that say "of course it is better" to enqueue jQuery from a CDN, usually mentioning Google CDN. But I am not convinced. See:
https://ttmm.io/tech/dont-dequeue-wordpress-jquery/
https://premium.wpmudev.org/blog/replacing-default-wordpress-scripts/
There was a time in history then lots of tutorials recommended enqueue'ing another jQuery, because  the WP core jQuery was an old version. Search/Google/ search for "wordpress  current version of jquery" and you will see a list. It says WordPress 4.6 contains jQuery 1.12.4
But maybe for B4ST, don't do this. For B4ST, I did enqueue a newer, slim version of jQuery (jquery-3.2.1.slim.min.js) from a CDN, because this is the same version as in the Bootstrap 4 documentation.
Look at the big table of included scripts that you can directly enqueue from the WordPress Core (scroll down) https://developer.wordpress.org/reference/functions/wp_enqueue_script/
You already know that your WordPress exists -- so you can depend upon the scripts that they have included and approve of.
Will your website be slightly slower to load (during first visit) than if your site is requesting jQuery from a CDN? Sometimes (e.g. if the visitor already visited other websites that have put jQuery in your browser cache from that same CDN). But visitors will probably not notice this. Your images may take more time to load than jQuery, if they are big and numerous.
Do you need a newer jQuery than what is included in the WP core? Sometimes. You know your own JS (and you know what is recommended in the Bootstrap docs for your preferred Bootstrap version). That should guide your decision.
jQuery in the <head> or at the end of the <body>? Because of WordPress being in control of delivering your website, I think it does not matter.
If your HTML link to jQuery fetches the jQuery (in a static website), then consider the paragraph [*] below. But in WordPress, your jQuery is being pushed to the visitor by WordPress, by the enqueue. WordPress will not wait until the HTML has fully arrived at the visitor, before it begins to push jQuery to the visitor. (And the other scripts probably will not execute until document ready, anyway.)
[* E.g. if you have (for example) some added CSS class, or added HTML, that is under the control of jQuery, then you should put jQuery in your <head>. But I usually have jQuery controlling stuff only after a click/tap, or only after a delay (e.g. in a slideshow).]
Simon

Simon... Thank you so much for your so detailed reply... I will study all very carefully!
Thanks again!

:-)

I have been using your BST as a base for a long time, so long that now is very different, I added a lot of functions and functionalities and it works great!... Do you recommend me to move to your B4ST?... is Bootstrap 4 fully compatible now?... and which are the main differences in a nutshell of your BST and your B4ST?
Thank you!

Hi Daniel,
BST and B4ST are very similar. B4ST is different in that it has its header.php etc. in the root folder, and the includes folder is now named loops.
Bootstrap 4 is already quite stable. I don't think it will change much. I can't see it doing anything different in all the modern browsers that I have used (Safari, Chrome, Firefox, Opera, Vivaldi, Brave, Edge, on MacOS and iOS).
I like Bootstrap 4 a lot better than Bootstrap 3. If you know Pug, you may like to try this: https://simonpadbury.github.io/Atomic-Boot-Pug/
Maybe if you still need to support IE9, then continue using Bootstrap 3. I have not looked at Bootstrap 4 on an old Windows PC.
Simon

So apart from files and folder structure (and obviously the Bootstrap 4 files) I understand I could migrate very easily from BST to B4ST... Thank you!
You are maybe tired of me but I am passionate about web development!... and you are a great source of inspiration for me, so if you don't mind, I have more questions for you... (sorry):

When I use jquery from Wordpress it adds jquery-migrate, should I remove it?

How can I move my CSS's to the footer in the same way JS's are moved to the footer using enqueues?

I am also very interested of adding PWA (Progressive Web Apps) to Worpress but using a clean way (your way!), the cleanest approach that I found was this: https://justmarkup.com/log/2016/01/add-service-worker-for-wordpress/ and it works on android but not on iphone, is there anything you know about PWA for Wordpress?

Thank you again Simon!

No problem. I enjoy being helpful.
The change from BST and B4ST is easy. The change from Bootstrap 3 to Bootstrap 4 -- this is where you need to focus.

WordPress adds jquery-migrate to have necessary compatibility for ancient plugins/themes. It is there for non-developers/non-designers who update WordPress every time it tells them to, but whose plugins and/or theme is really old. Don't use ancient plugins and you don't need jquery-migrate.

Don't use a plugin to remove jquery-migrate. Just do this: https://derekshirk.com/what-is-migrate-js-and-why-does-wordpress-enqueue-it/

Don't put your CSS link/enqueue in the footer. Why do you want to do this? Why do you want your page to be unstyled until the CSS arrives later?

I have never looked at progressive web apps or service workers.

Maybe I am a web dinosaur already!

Bootstrap 4: you will be an expert in a short time. Maybe just watch some YouTube videos or follow some tutorials on people's blogs.
For simple things like registering, enqueuing, etc., where you only need to do something once, no it is not necessary to wrap it in a function.

Thank you Simon!

Will learn bootstrap 4 then!
So removing jquery-migrate can also be done using my way
What do you think about Eliminating render-blocking CSS in above-the-fold content?

Yes it can be done your way, easily, I expect.
Render blocking CSS is a lot slow, bug CSS files, isn’t it?
Maybe this is what you need I already use this plugin but I never did what this article says:
http://www.wpbeginner.com/wp-tutorials/how-to-fix-render-blocking-javascript-and-css-in-wordpress/
Simon

On 29 Nov 2017, at 19:42, danielmrey<EMAIL_ADDRESS>wrote:
Thank you Simon!
Will learn bootstrap 4 then!
So removing jquery-migrate can also be done using my way
What do you think about Eliminating render-blocking CSS in above-the-fold content?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Corrected typo in my reply

Thank you!
I will see those plugins although I would like to do it by code, something like this, but precisely this one doesn't seem to work: https://wordpress.stackexchange.com/questions/186065/how-to-load-css-in-the-footer

Thanks, I will test this tomorrow, it is late here in England. I will let you know if I can get it to work.
What  use above the fold, just a few in head styles?
Have you tried BassCSS or Tachyons CSS? These are also good for when you need to do styling within a post, in the editor.

On 29 Nov 2017, at 19:57, danielmrey<EMAIL_ADDRESS>wrote:
Thank you!
I will see those plugins although I would like to do it by code, something like this, but precisely this one doesn't seem to work: https://wordpress.stackexchange.com/questions/186065/how-to-load-css-in-the-footer
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Thank you so much for all your help today!... I am also in England  but can't stop today!... :-)
I tried this and it is great: https://wordpress.org/plugins/autoptimize/ but I always prefer to find it programatically
Above the fold I have 2 CSS files, one is bootstrap and the other my styles, buy Google is telling me that I should eliminate render-blocking CSS in above-the-fold content...
Never tried BassCSS or Tachyons CSS

I found this: https://premium.wpmudev.org/forums/topic/moving-appointments-css-to-footer
Have a good night Simon, and thanks again!

Morning Daniel,
This works. You still need to register Bootstrap before you can enqueue it. Either register it before the function (as in this example) or within the function:
wp_register_style('bootstrap-css', 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/css/bootstrap.min.css', false, '4.0.0-beta.2', null);
//wp_enqueue_style('bootstrap-css');

//Register other styles that you want to add in the footer

function prefix_add_footer_styles() {
    wp_enqueue_style('bootstrap-css');

    //Enqueue other styles that you want to add in the footer

};
add_action( 'get_footer', 'prefix_add_footer_styles' );

I'm still not clear why this would make much difference to your speed. And surely, if Bootstrap is styling  anything above the fold (even think about the CSS reset that is within Bootstrap, called Reboot), then you need it up in the head or else people on slow connections/ phones will get a flicker of wrongly-styled stuff. E.g. does your site not have a Bootstrap navbar?
Images are usually the biggest items that need loading.
Anyway, whose fold? Phones? Your site will load slowest on phones (any any devices connected to the internet via 3G).

Hi Simon:
Thank you for this, I will try this code... and sorry for the late reply... I had to put a website live and it gave me a lot of problems due to a very old hosting...
My concern about placing all in footer is because Google PageSpeed Insights keep telling me to do this to eliminate render-blocking JavaScript and CSS in above-the-fold content
Yes my websites have bootstrap navbars
Never done lazy loading for images... Can that be done easily in Wordpress?
The fold lines are dictated by Google PageSpeed Insights: https://developers.google.com/speed/pagespeed/insights/
Thanks again!

Hi Daniel,
Then you need Bootstrap CSS up in the Head, so that it can style your important navbar above the fold.
For lazy load images, you need a script and you also need a set of fast, low-res images.
What happens: The page loads quickly, and low res images (=thumbnails enlarged too much) are used to layout the page below the fold. And when the visitor scrolls down, these rubbish images are swapped for their high res version, each when they will be shown. (And meanwhile, some scripts continue loading the images.)
WordPress can create all the low res images for you.
http://www.wpbeginner.com/plugins/regenerate-thumbnails-new-image-sizes-wordpress/ http://www.wpbeginner.com/plugins/regenerate-thumbnails-new-image-sizes-wordpress/
Then you need one of these options:
Plugins:
https://managewp.com/lazy-load-tools https://managewp.com/lazy-load-tools
http://www.wpbeginner.com/plugins/how-to-do-lazy-load-images-in-wordpress/ http://www.wpbeginner.com/plugins/how-to-do-lazy-load-images-in-wordpress/
Other options:
https://www.kevinmuldoon.com/lazy-load-wordpress-plugins/ https://www.kevinmuldoon.com/lazy-load-wordpress-plugins/
https://www.giftofspeed.com/lazy-load-images/ https://www.giftofspeed.com/lazy-load-images/
o  o  o  o  o  o  o
Meanwhile, also use WPTotalCache (or similar) so that your visitors get served already-built HTML from a cache folderm (like as for a static website) instead of waiting for WordPress building each page every time for every visitor.
Hope this helps,
Simon

On 1 Dec 2017, at 14:47, danielmrey<EMAIL_ADDRESS>wrote:
Hi Simon:
Thank you for this, I will try this code... and sorry for the late reply... I had to put a website live and it gave me a lot of problems due to a very old hosting...
My concern about placing all in footer is because Google PageSpeed Insights keep telling me to do this to eliminate render-blocking JavaScript and CSS in above-the-fold content
Yes my websites have bootstrap navbars
Never done lazy loading for images... Can that be done easily in Wordpress?
The fold lines are dictated by Google PageSpeed Insights: https://developers.google.com/speed/pagespeed/insights/ https://developers.google.com/speed/pagespeed/insights/
Thanks again!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-348513248, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpVNShz0aEN2xsWAo_FOlqe_bipQHks5s8BGZgaJpZM4QkGUg.

You are right... Bootstrap has to be in the header, will keep that code for when I need to add more CSS's and can be in the footer.
Will investigate the lazy load... But doesn't the process make the contents creation more complex for client?... also doesn't the new addition of a plugin slow down a bit the website?... At the moment what I am doing is generating progressive JPG, I know is not the same but uses the same concept.
I used WPTotalCache before and it is great but when I update code and contents the cache is very sticky... The solution is deactivate it make changes and then activate it?
I have some clients with slow server response and I would like to know who to "blame"... Is there a way of isolating the server timing from Wordpress processes or even from theme programming?... So I will know if is the hosting what slow the website or if it is my Theme?
Thank you!

Just in case I didn't mention, I use these 2 plugins:

For PWA: https://github.com/wp-pwa/wp-pwa-plugin

For Speed: https://wordpress.org/plugins/autoptimize/

How can I remove the annoying inline style that Wordpress add to the captions? I tried this but does not work:
;(function ($) {
"use strict";

$(document).ready(function () {

    // Remove inline style
    $(".wp-caption").removeAttr("style");
    $(".attachment-full").removeAttr("style");

});

}(jQuery));

Correction: I used "WP Super Cache" not "WP Total Cache"

Hi Daniel,
I actually never deployed lazy load, but I know that this plugin is popular: https://wordpress.org/plugins/bj-lazy-load/ https://wordpress.org/plugins/bj-lazy-load/
WPTotal Cache (WPTC) serves “already created” HTML webpages to the visitor, and it creates the page when you click Publish. (I can’t remember whether WPTC does modify these pages when you click “Update”.) But WPTC doesn’t detect when you edit PHP files.
So that you can see your changes while you work, you need to (a.) switch off WPTotal Cache, and (b.) empty the cache.
When you are happy with your changes, switch on WPTC again. It will generate a completely new cache.
For slow server response time, I would Google and find any recent blog post with a list of things you can do, e.g. not have too many plugins, not have too many versions of jquery added, not have images that are too big. When you are satisfied that you have done all that you can do, you can blame the slowness on the server! :-)
Simon

On 4 Dec 2017, at 11:15, danielmrey<EMAIL_ADDRESS>wrote:
You are right... Bootstrap has to be in the header, will keep that code for when I need to add more CSS's and can be in the footer.
Will investigate the lazy load... But doesn't the process make the contents creation more complex for client?... also doesn't the new addition of a plugin slow down a bit the website?... At the moment what I am doing is generating progressive JPG, I know is not the same but uses the same concept.
I used WPTotalCache before and it is great but when I update code and contents the cache is very sticky... The solution is deactivate it make changes and then activate it?
I have some clients with slow server response and I would like to know who to "blame"... Is there a way of isolating the server timing from Wordpress processes or even from theme programming?... So I will know if is the hosting what slow the website or if it is my Theme?
Thank you!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-348932635, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpeAE7EWnXzNH-P3Ily87SVoAQCYEks5s89RQgaJpZM4QkGUg.

Hi Daniel,
Don’t try to remove the style by jQuery — but use this PHP to stop the style being added:
http://wp-snippets.com/remove-default-inline-style-of-wp-caption/ http://wp-snippets.com/remove-default-inline-style-of-wp-caption/
Simon

On 4 Dec 2017, at 13:08, danielmrey<EMAIL_ADDRESS>wrote:
How can I remove the annoying inline style that Wordpress add to the captions? I tried this but does not work:
;(function ($) {
"use strict";
$(document).ready(function () {
// Remove inline style
$(".wp-caption").removeAttr("style");
$(".attachment-full").removeAttr("style");

});
}(jQuery));
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-348957352, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpbefIsqpJgD6XRG45OuiF_wQ2jrCks5s8-7DgaJpZM4QkGUg.

I will try all your pieces of code, thank you so much!
When you say WPTC you mean W3 total cache?... I have used WP Super Cache... I am looking for something simple but effective, mainly because my clients need to be able to use it and normally they are not very good with programming and IT...
In Xmas and new year I normally do not have many clientS so I will use that tile to learn Bootstrap 4, and probably will use your B4ST as base... Is your B4ST compatible with Woocommerce?
Thanks.

Hi Daniel,
I haven’t built a Woocommerce site in a long time — I haven’t put together Woocommerce and Bootstrap 4 yet. I doubt that there will be a problem, they should be compatible.
What I like to do is style the WooCommerce buttons etc to be the same as Bootstrap — so that you don’t get two different styles of buttons on one website. For some stuff, Boostrap classes can be added in easily. Other stiff will require copying Bootstrap CSS and applying it to Woocommerce classes.
If I get opportunity in late December I will gave a crack at this. I iwll probably begin with this:
https://docs.woocommerce.com/document/third-party-custom-theme-compatibility/ https://docs.woocommerce.com/document/third-party-custom-theme-compatibility/
https://wpthememakeover.com/2016/06/02/how-to-add-woocommerce-support-to-your-theme/ https://wpthememakeover.com/2016/06/02/how-to-add-woocommerce-support-to-your-theme/
https://www.youtube.com/watch?v=dyVH9zAcd5s https://www.youtube.com/watch?v=dyVH9zAcd5s
https://www.youtube.com/watch?v=1wtBdrPDIhc https://www.youtube.com/watch?v=1wtBdrPDIhc
Yes, by WPTC I meant WordPress Total Cache. Saves writing it out lots of times.
Simon

On 8 Dec 2017, at 12:27, danielmrey<EMAIL_ADDRESS>wrote:
I will try all your pieces of code, thank you so much!
When you say WPTC you mean W3 total cache?... I have used WP Super Cache... I am looking for something simple but effective, mainly because my clients need to be able to use it and normally they are not very good with programming and IT...
In Xmas and new year I normally do not have many clientS so I will use that tile to learn Bootstrap 4, and probably will use your B4ST as base... Is your B4ST compatible with Woocommerce?
Thanks.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-350251683, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpQBpmYiNARLkwE7PNgPvncBl16B1ks5s-StDgaJpZM4QkGUg.

Hi Simon:
Your WBST is Woocommerce compatible so I compared it with your BST to get the Woocommerce compatibility to added it to my version of your BST (... hard work!) and I found this:
1- new-css: /css/wbst.css: I used only rules starting with .woocommerce
2- new-js: /js/wbst.js
3- new-function: /functions/woocommerce-setup.php
4- new-template: /woocommerce.php: with woocommerce_content();
Then I added these files to be loaded in its files:
A- enqueues new-css + new-js:  /functions/enqueues.php: wbst.css (1) + wbst.js (2) needs jQuery
B- function new-function: /funtions.php: call woocommerce-setup.php (3)
And it works beautifully... (just needs some styling adjustments)
So if you add this to your B4ST to make it WB4ST it should work... But I understand what you mean about styling Woocommerce buttons with Bootstrap 4 and not having 2 styling for buttons in the same web.
RE Cache plugins: is "WordPress Total Cache" same as "W3 Total Cache" ?
Thanks!

Hi Daniel,
Yes W3 Total Cache is the same thing as WP Total Cache. It’s what I meant.
Thanks, I will hopefully make a combination B4ST with WooCommerce as another separate repository, late December if/when I get some spare time.
But maybe WB4ST would be too silly for a name. I’ll have to think of something cool. WooBoot4 ? Maybe not! :-)
I called another project of mine “Atomic Boot Pug”.
Take care,
Simon

On 8 Dec 2017, at 13:38, danielmrey<EMAIL_ADDRESS>wrote:
Hi Simon:
Your WBST is Woocommerce compatible so I compared it with your BST to get the Woocommerce compatibility to added it to my version of your BST (... hard work!) and I found this:
1- new-css: /css/wbst.css: I used only rules starting with .woocommerce
2- new-js: /js/wbst.js
3- new-function: /functions/woocommerce-setup.php
4- new-template: /woocommerce.php: with woocommerce_content();
Then I added these files to be loaded in its files:
A- enqueues new-css + new-js: /functions/enqueues.php: wbst.css (1) + wbst.js (2) needs jQuery
B- function new-function: /funtions.php: call woocommerce-setup.php (3)
And it works beautifully... (just needs some styling adjustments)
So if you add this to your B4ST to make it WB4ST it should work... But I understand what you mean about styling Woocommerce buttons with Bootstrap 4 and not having 2 styling for buttons in the same web.
RE Cache plugins: is "WordPress Total Cache" same as "W3 Total Cache" ?
Thanks!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-350265158, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpRSCRTYAcFgMeHeohN4MBgXHmoVPks5s-TvogaJpZM4QkGUg.

Hi Simon:
Or maybe just add compatibility to B4ST that can be activated/deactivated so you do not need to have to maintain so many projects... just a thought... I can help you testing... :-)
BTW I love WooBoot4 for a name!
I saw your Atomic Boot Pug... I liked the top nav and left nav at the same time... try to isolate it to use it my theme but I didn't get a clean code tho...
Thanks!

Hi Daniel,
Yes, too many projects — my Bootstrap 3 themes multiplied into BST, WBST and BST-Plus. (I don’t plan on updating any of these, because Bootstrap 4 is already much better than Bootstrap 3).
I think, however, that I do want B4ST and WooBoot4 (maybe that name is beginning to stick!) to be two separate projects — unless there’s an easy way to include/disinclude if developer doesn’t need it. I will think about that.
Do you use/have you experimented with:

Sass, SCSS, Less or other CSS pre-processor?
Pug, Handlebars or some other HTML pre-processor?
A static site generator (such as Jekyll)?
Free “command line” developer software such as Webpack, Grunt or Gulp to do pre-processing, or paid software such as Codekit (Mac) or Prepros (Windows) to do preprocessing?

Answer me at<EMAIL_ADDRESS>Simon

On 11 Dec 2017, at 14:41, danielmrey<EMAIL_ADDRESS>wrote:
Hi Simon:
Or maybe just add compatibility to B4ST that can be activated/deactivated so you do not need to have to maintain so many projects... just a thought... I can help you testing... :-)
BTW I love WooBoot4 for a name!
I saw your Atomic Boot Pug... I liked the top nav and left nav at the same time... try to isolate it to use it my theme but I didn't get a clean code tho...
Thanks!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/SimonPadbury/WBST/issues/13#issuecomment-350743116, or mute the thread https://github.com/notifications/unsubscribe-auth/AFTFpTwhJyWO3qZoOo-wvNdAPyFsKNYbks5s_T8IgaJpZM4QkGUg.

Hi Simon:
I think adding Woocommerce compatibility to B4ST is very easy and if developer does not use Woocommerce then these files, rules and functions are simply not used
1- add new rules to bst.css, starting with class .woocommerce that will not affect if you do not use Woo
2- wbst.js include bst.js anyway
3- new-function woocommerce-setup.php is a matter of calling this function only if you use Woo
4- new-template: woocommerce.php with woocommerce_content(); used only if you use Woo
But obviously is your project!
Thanks!


Could not pickle object as excessively deep recursion required

when I try object detection task, use tiny motorbike dataset privided by demo, but some error happen

Traceback (most recent call last):
File "train.py", line 15, in
time_limits=time_limits)
File "/opt/conda/lib/python3.6/site-packages/autogluon/task/object_detection/object_detection.py", line 257, in fit
scheduler_options)
File "/opt/conda/lib/python3.6/site-packages/autogluon/task/base/base_task.py", line 43, in run_fit
scheduler.run()
File "/opt/conda/lib/python3.6/site-packages/autogluon/scheduler/fifo.py", line 146, in run
self.schedule_next()
File "/opt/conda/lib/python3.6/site-packages/autogluon/scheduler/fifo.py", line 177, in schedule_next
self.add_job(task, **extra_kwargs)
File "/opt/conda/lib/python3.6/site-packages/autogluon/scheduler/fifo.py", line 223, in add_job
job = cls._start_distributed_job(task, cls.RESOURCE_MANAGER, self.env_sem)
File "/opt/conda/lib/python3.6/site-packages/autogluon/scheduler/scheduler.py", line 102, in _start_distributed_job
env_sem)
File "/opt/conda/lib/python3.6/site-packages/distributed/client.py", line 1485, in submit
actors=actor,
File "/opt/conda/lib/python3.6/site-packages/distributed/client.py", line 2461, in _graph_to_futures
"tasks": valmap(dumps_task, dsk3),
File "cytoolz/dicttoolz.pyx", line 165, in cytoolz.dicttoolz.valmap
File "cytoolz/dicttoolz.pyx", line 190, in cytoolz.dicttoolz.valmap
File "/opt/conda/lib/python3.6/site-packages/distributed/worker.py", line 3211, in dumps_task
return {"function": dumps_function(task[0]), "args": warn_dumps(task[1:])}
File "/opt/conda/lib/python3.6/site-packages/distributed/worker.py", line 3220, in warn_dumps
b = dumps(obj)
File "/opt/conda/lib/python3.6/site-packages/distributed/protocol/pickle.py", line 51, in dumps
return cloudpickle.dumps(x, protocol=pickle.HIGHEST_PROTOCOL)
File "/opt/conda/lib/python3.6/site-packages/cloudpickle/cloudpickle.py", line 706, in dumps
cp.dump(obj)
File "/opt/conda/lib/python3.6/site-packages/cloudpickle/cloudpickle.py", line 150, in dump
raise pickle.PicklingError(msg)
_pickle.PicklingError: Could not pickle object as excessively deep recursion required.
0%|                                                                                | 0/2 [00:02<?, ?it/s]

and here is the try code

import autogluon as ag
from autogluon import ObjectDetection as task
import os
data_root = "/root/workspace/try_auto_gluon/dataset/tiny_motorbike/tiny_motorbike"
dataset_train = task.Dataset(data_root, classes=('motorbike',))
time_limits = 56060  # 5 hours
epochs = 30
detector = task.fit(dataset_train,
num_trials=2,
epochs=epochs,
lr=ag.Categorical(5e-4, 1e-4),
ngpus_per_trial=1,
time_limits=time_limits)
dataset_test = task.Dataset(data_root, index_file_name='test', classes=('motorbike',))
test_map = detector.evaluate(dataset_test)
print("mAP on test dataset: {}".format(test_map[1][1]))

Could you check the dask and distributed package versions?
pip show dask
pip show distributed

Could you check the dask and distributed package versions?
pip show dask
pip show distributed

@zhanghang1989 the dash and distributed  version is 2.6.0

The dask and distributed versions are correct. Sorry that I could not reproduce the issue on my machine. What's your environment settings?


Flowables::fromGenerator operator

This will allow using more Flowable operators with non-copyable T.

replacing with https://github.com/rsocket/rsocket-cpp/pull/461


AggregateBalanced overload for Expression<Func<Type, bool>>[]?

First of all, thank you for this great library. I've been able to rip out quite some (buggy) custom expression builders and replace it with this library. A big help.
I have a list of conditions (Expression<Func<Type, bool>>) that I want to pass to an IQueryable. The number of conditions can be rather large, so I have to resort to AggregateBalanced to prevent a StackOverflowException. However the signatures of AggregateBalanced require an operationToDo of TExpression, in this case: Expression<Func<Type, bool>>. I'd like to pass Expression.Or, but it isn't the proper type:

Expected a method with 'Expression<Func<Type,bool>> Or(Expression<Func<Type,bool>>, Expression<Func<Type,bool>>)' signature

I think with some reflection and/or casting I can probably get this working, but I feel this is a pretty common use-case for AggregateBalanced that would be beneficial to more users.
Example (not working):
var conditions = new Expression<Func<string, bool>>[] {
    a => a == "foo",
    b => b == "bar",
    c => c == "baz",
};
conditions.AggregateBalanced(Expression.Or);

Additionally; instead of taking an array, consider accepting an ICollection<> so that users can pass in a List<> as well.

And that's where PredicateBuilder comes in:
var conditions = new Expression<Func<string, bool>>[] {
    a => a == "foo",
    b => b == "bar",
    c => c == "baz",
};
conditions.AggregateBalanced(PredicateBuilder.Or);


Add support for Cluster API

Hi. Are there any news regarding this? I would need this feature, so probably will try add it myself if nobody has started working on it yet.

Well, I guess, I've ended up adding almost everything spring-data-redis has introduced to work with topology. So moving it here is not an option. Mb it would be helpful for someone also looking for a solution.


Memory guidance

Can you provide approximate memory requirement guidance for using the model?

indeed it went OOM in my laptop, switching to a larger server, a simple
import timesfm

tfm = timesfm.TimesFm(
    context_len=128,
    horizon_len=64,
    input_patch_len=32,
    output_patch_len=128,
    num_layers=20,
    model_dims=1280,
    backend="gpu",
)
tfm.load_from_checkpoint(repo_id="google/timesfm-1.0-200m")

Seems to take around 18G of vram


Use source file extension when applying toolchain flags

Obtain C or C++ flags from the toolchain depending on the source file extension. This prevents use of C++ flags (e.g. -std=c++17) with C source files.

Thanks!


CLI: if user misprinted with the cli-argument - save should make a normal logging instead of 'directory not found'

If user has made a mistake and misprinted:
$ ./save.kexe --repoTR-type plain save
[ERROR]: Not able to find directory '--repoTR-type'. Please provide a valid path to the root directory of test files.

Save should help a user and print help. Actually cli library that is used in save is doing that, but the usage is incorrect.

akuleshov7@DESKTOP-8I7GFOJ:/mnt/d/save-huawei$ ./save.kexe --result-output=plain save
[ERROR]: Not able to find directory '--result-output=plain'. Please provide a valid path to the root directory of test files.
akuleshov7@DESKTOP-8I7GFOJ:/mnt/d/save-huawei$
akuleshov7@DESKTOP-8I7GFOJ:/mnt/d/save-huawei$
akuleshov7@DESKTOP-8I7GFOJ:/mnt/d/save-huawei$ ./save.kexe  save --result-output=plain
[INFO]: Welcome to SAVE version 0.2.0-alpha.0.14+20210913T085818Z
[WARN]: Couldn't found any satisfied test resources for `[save/--result-output=plain]`
Please check the correctness of command and consider, that the last arguments treats as test file names for individual execution.
[
]

[INFO]: SAVE has finished execution. You can rerun with --debug for additional information.

Please also check that these cases are valid:
./save.kexe --report-type plain myDir
./save.kexe  myDir
./save.kexe myDir --report-type plain


CourseController - too coupled to SDMM Functionality

Pull out what can be removed into a common module; hide SDMM code behind w/ DIP.

This is fixed now; CourseController doesn't have any SDMM stuff left in it.


[bug] does not support range request

pget 'https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/Git%20for%20Windows%202.35.1%282%29/Git-<IP_ADDRESS>-32-bit.exe'

Error:
  https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/Git%20for%20Windows%202.35.1%282%29/Git-<IP_ADDRESS>-32-bit.exe: does not support range request

when url not support range request , pget should not use range request  and it should be compatible with this error

reason here https://github.com/Code-Hex/pget/issues/16#issuecomment-234464583

@Code-Hex i hnow , but wget works fine


GDScript: Assume freed object to be of any Object type

Since we can't check the actual type, we assume the type is correct if the expected type is Object-derived, the same as what happen with null values.
Fix #86609

Makes a lot of sense to me, but we should check other places as well. For example, the following hack is probably no longer needed, at least replacing Freed Object with null (see #81605 for details):
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_lambda_callable.cpp#L95-L101
The old behavior (error when passing Freed Object as a parameter) was convenient, perhaps people rely on it:

It seems that the useful error will not appear with this PR, since it does not appear now if you remove the type hint from the function parameter. Probably a similar check should be done separately, since we check this in many cases:

Incomplete list
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_utility_functions.cpp#L550
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_utility_functions.cpp#L567
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L825
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L847
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L1362
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L1399
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L2249
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L2560
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L2602
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L2970
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L3301

By the way, I noticed an error, was_freed is not used:
https://github.com/godotengine/godot/blob/107f2961ccfac179af7682eb5f6e7ea91e80040c/modules/gdscript/gdscript_vm.cpp#L1721-L1730

What I think is that is if a value is immediately used it should give an error. For instance, passing it to a utility function should raise the error because the user does not have control of its contents, but passing to a user-made function (like in this PR) should not trigger it automatically. Because sometimes the user don't have a lot of control of the source of data. For most cases being freed or null is pretty much the same, so while the error is somewhat useful in some situations, it does not really exclude argument validation.
I do agree that it should be changed in a few other places to be consistent with this if needed.

Updated this to remove the check in lambda captures, since that is not needed anymore. I also added a change to allow is to be performed on a freed object, which will always return false since the type cannot be checked.
I considered doing the same for casting (as) but I think it's better to keep it an error. If you're casting a freed object you're most likely doing something wrong.
Also added a few test cases to validate the behavior.

I disagree with as staying an error. is/as are supposed to be non-throwing and safe operators to write type-safe code, not randomly crash to the editor operators. I was very surprised they worked like this.

If you're casting a freed object you're most likely doing something wrong.

Can you describe which scenarios this helps?
Assuming you deliberately have a freed object you cannot store/access/move it safely elsewhere or type-check with the is/as operators since it will break, despite the logic being functionally correct otherwise. With the current design you are burdened to micromanage every resource intricately. It basically makes freed objects radioactive, when they could be graceful.
I think that all of the VM breaks should be removed and replaced with gentle linting (that can be toggled off) rather than hard errors that prevent the user from progressing with simpler code.


Adding an item to basket, generates a lineitem entry in the db

when a user clicks reserve to add to basket, POST to lineitem
The item should be marked as reserved:true
the item will be marked as reserved:false when:
If the user removes it from their basket
the user times out/basket is cleared
when the reservation is marked as "complete"

The item should be marked as reserved:true
the item will be marked as reserved:false when:

See Issue #9 for the updated field on lineitem

Currently, an item is being marked as hold=true when it is added to the basket, and there's even a nice toast setup done as well.
The search results are NOT being updated, but I would like to attempt to merge this as is and address that in another ticket.


nvim-treesitter[gomod]: Error during tarball extraction.  tar: Error opening archive: Failed to open 'tree-sitter-gomod.tar.gz'

Such as title

it is a treesitter or local issue, not related to this config
look through these to find the root cause:
https://github.com/LunarVim/LunarVim/issues/1578#issuecomment-1758029585
https://github.com/nvim-treesitter/nvim-treesitter/issues/4250
https://github.com/nvim-treesitter/nvim-treesitter/issues/4051
https://github.com/nvim-treesitter/nvim-treesitter/issues?q=is%3Aissue+"tarball+extraction"


Support for wyoming output protocol

While latest home assistant update introduces new voice support, it's missing piece of making home camera acts as a microphone provider. I am not sure if this is the optimal way for providing such an endpoint.
There is documentation:
https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md
But I am not sure is mic is supported by existing HA integration:
https://www.home-assistant.io/integrations/wyoming/
https://github.com/home-assistant/core/tree/dev/homeassistant/components/wyoming

As I can see, Hass support only STT and TTS for now:
https://github.com/home-assistant/core/blob/04c298b772bba02ca7b4ffd5cb2220859e471e9a/homeassistant/components/wyoming/config_flow.py#L54-L55
Theoretically go2rtc can provide audio-chunk. But I don't understand what software will request them.
Looks like rhasspy3 support different adapters. And go2rtc can be mic adapter. But all current adapters uses stdin/stdout:
https://github.com/rhasspy/rhasspy3/blob/master/examples/satellite/configuration.yaml
So I don't understand right place for go2rtc.

Ok, I will reopen this when wyoming integration will support mic.
I wrongly assume that project like:
https://www.home-assistant.io/projects/thirteen-usd-voice-remote/
Are using such connector, but they interact directly with voice_assistant
https://github.com/home-assistant/core/blob/dev/homeassistant/components/esphome/voice_assistant.py

So. At your suggestion, I made a couple of new integrations. I think that's enough for now.
https://github.com/AlexxIT/StreamAssist
https://github.com/AlexxIT/FasterWhisper

Wow ..thats awesome! Installing and testing right now 🥳


US 06.06.01

As an owner I want to be able to change my password.

US 06.04.01: Functionality for logging into and out of existing accounts must be in place
There must be an option in edit profile for changing ones password
The user must enter their current password in order to change it
They must enter the new password twice and have both match

No longer relevant. App utilizes google sign-in.


Bump stack from cflinuxfs3 to cflinuxfs4 [v8]

Replace cflinuxfs3 stack references with cflinuxfs4
Use CAPI release version repository var if set. If not, get the latest CAPI version
Remove min CAPI jobs
Move ops-files from cli-ci to this repo

Please consider making separate PRs for unrelated changes like cleanup of min CAPI jobs and cflinux stack bumps moving forward.