update ark dependencies to 0.4.0

needed to migrate jellyfish to arkworks 0.4

Sure, no objection.

I just updated this repo to incorporate the newest API changes in arkworks 0.4.0.
New features in arkwork serializable object
The interfaces for CanonicalSerialize and CanonicalDeserialize now has 2 flags, that allow users to 1) choose whether to compress the data during (de)serialization, and 2) perform validity check when deserializing the data.
However, derived implementations for CanonicalSerialize and CanonicalDeserialize ignore those 2 flags. So it does not affect most of our previous code, since usually we only use the derived implementation.
What I did
For tagged macro, the default behavior is changed to uncompressed and unchecked.
I added 2 new flags compressed and checked to it, so users can now derive their desired implementations.
@alxiong @tessico @jbearer Please take a look. My implementation could be very amateur :)


Forcing a specific shared module to go into it's own chunk

Imagine a SPA with one entry chunk and 10 pages. 3 of those pages use highcharts and highcharts is quite hefty.
I don't want to put it into entry chunk to not slow down the initial page load and it's only needed in 3 pages anyway.
I don't want to put it into each of those 3 page chunks since it weighs them all down.
I want to force highcharts into it's own chunk, independently of how other chunks are created and merged, moved to parent, etc. I want this highcharts chunk to only be loaded if one of those 3 pages is loaded.
I can achieve that in r.js with modules/include/exclude config. I was wondering if there's a way to achieve this in webpack.
The only thing I could think of (while typing this issue) is to try and put a require.ensure(["highcharts"]) into the entry chunk and hope that highcharts will end up into it's own chunk and won't be bundled together with other chunks. I'll try that now and see if it works.
Finally, I imagine a plugin could be written where you could say something like new ForceChunk(["highcharts"]), but was wondering if there's already a way to achieve this. Also, not sure if this plugin is possible without converting require("highcharts") calls into async calls in those 3 pages.

You can now use the CommonsChunkPlugin to create an additional chunks that is loaded in parallel to the normal additional chunks.
https://github.com/webpack/webpack/tree/master/examples/extra-async-chunk

Amazing!
On Sun, 11 Jan 2015 22:20 Tobias Koppers<EMAIL_ADDRESS>wrote:

You can now use the CommonsChunkPlugin to create an additional chunks that
is loaded in parallel to the normal additional chunks.
https://github.com/webpack/webpack/tree/master/examples/extra-async-chunk
—
Reply to this email directly or view it on GitHub
https://github.com/webpack/webpack/issues/640#issuecomment-69514673.

I also ended up with several async CommonsChunkPlugins, but since it is an optimization step it seems to affect performance of incremental builds.
It is actually conceptual problem, because currently webpack is a bit too smart about what goes where for async chunks. Sometimes developers just know their system better (like in the subject post), but right now there are no simple and documented ways to configure async bundles (preferably on build step, not optimization one).
The most common use case is indeed extracting big libraries to their own chunk. I also have like 3 big libraries that are occasionally required, but I really don't want them to be in commons chunk, because they are used on 5% of pages at most.
If only we could write config like this:
{
    entry: './main',
    bundles: [
        {entry: 'my/custom/module1', chunkFilename: 'chunk1.js'},
        {entry: 'my/custom/module2', exclude: 'my/custom/module1', chunkFilename: 'chunk2.js'}
    ]
}

It would make dealing with big code bases so much easier. My main concern with approach using multiple CommonsChunkPlugins is performance - it made incremental builds significantly slower for us.

Was there any progress on this issue? My use case is that translations are packed into the commons file, so I won't benefit from caching if either of these is updated.
I don't know how the plugin works internally, but it doesn't seem difficult to add an exclude option


WSL2: GPU not working anymore

I updated Ollama to latest version (0.1.17) on a Ubuntu WSL2 and the GPU support is not recognized anymore.
At the end of installation I have the followinf message: "WARNING: No NVIDIA GPU detected. Ollama will run in CPU-only mode."
Running nvidia-smi:
Wed Dec 20 14:23:15 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.146.01             Driver Version: 537.99       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  Quadro P4000                   On  | 00000000:17:00.0 Off |                  N/A |
| 46%   34C    P8               6W / 105W |      0MiB /  8192MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
|   1  Quadro P2200                   On  | 00000000:65:00.0  On |                  N/A |
| 47%   35C    P8               5W /  75W |    318MiB /  5120MiB |      3%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

Hi @mircomir would it be possible to try the latest version and let me how it goes? This should be fixed as we've improved how CUDA is detected. You can upgrade by re-running the install script here: https://ollama.ai/download/linux

Hi @jmorganca. Sure!
ubuntu@CERWS169:~$ sudo curl https://ollama.ai/install.sh | sh
[sudo] password for ubuntu:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0>>> Downloading ollama...
100  8354    0  8354    0     0  22635      0 --:--:-- --:--:-- --:--:-- 22701
######################################################################## 100.0%##O#-#
######################################################################## 100.0%
>>> Installing ollama to /usr/local/bin...
>>> Adding ollama user to render group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
>>> NVIDIA GPU installed.
ubuntu@CERWS169:~$ ollama --version
ollama version is 0.1.19

The using ollama the GPU are used:

It works for me :)

PS: thanks!

Hi @mircomir would it be possible to try the latest version and let me how it goes? This should be fixed as we've improved how CUDA is detected. You can upgrade by re-running the install script here: https://ollama.ai/download/linux

For me since the new updated it does not detect the GPU anymore, before it did without any problems. Im running Ollama on Kaggle enviroment: https://www.kaggle.com/code/aliabdin1/ollama-server

For me since the new update it does not detect the GPU anymore, before it did without any problems. Im running Ollama on Kaggle enviroment: https://www.kaggle.com/code/aliabdin1/ollama-server

I can confirm that also in WSL2 the installer of v0.20 didn't find the GPU anymore. But when running ollama as a user (ollama run llama) the GPU is used. Evidently there is still something to refine in GPU research :)
root@CERWS169:~# curl https://ollama.ai/install.sh | sh
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0>>> Downloading ollama...
100  8354    0  8354    0     0  26645      0 --:--:-- --:--:-- --:--:-- 26690
######################################################################## 100.0%##O#-#
######################################################################## 100.0%

Installing ollama to /usr/local/bin...
Adding ollama user to render group...
Adding current user to ollama group...
Creating ollama systemd service...
Enabling and starting ollama service...
The Ollama API is now available at <IP_ADDRESS>:11434.
Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA GPU detected. Ollama will run in CPU-only mode.
root@CERWS169:~# ollama --version
ollama version is 0.1.20

For me since the new update it does not detect the GPU anymore, before it did without any problems. Im running Ollama on Kaggle enviroment: https://www.kaggle.com/code/aliabdin1/ollama-server

I can confirm that also in WSL2 the installer of v0.20 didn't find the GPU anymore. But when running ollama as a user (ollama run llama) the GPU is used. Evidently there is still something to refine in GPU research :)
root@CERWS169:~# curl https://ollama.ai/install.sh | sh
...
Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA GPU detected. Ollama will run in CPU-only mode.
root@CERWS169:~# ollama --version
ollama version is 0.1.20

I just do a work around now and it works again:
!curl https://ollama.ai/install.sh | sed 's#https://ollama.ai/download#https://github.com/jmorganca/ollama/releases/download/v0.1.17#' | sh


Status409Conflict -> Status429TooManyRequests

To indicate rate limiting; could also be Status402PaymentRequired to signal upgrade required?
When load testing Status409Conflict confused me as it suggested duplicate request issues.

Agreed. Thanks!


Stop setting desktop mode when exiting the Settings UI

[x] Code Review
[x] Developer Testing: Key item tests

This PR is no longer required as we will address the issue elsewhere


3 improve trainer

Added:

possibility to train a bertmesh model via the grants-tagger train command
dataloading (streaming) for the large MeSH data
a config system that lets you pass training arguments from the command line in addition to the train command's own arguments

Example command to run training with batch size 4:
grants-tagger train bertmesh
    Wellcome/WellcomeBertMesh
    data/raw/allMeSH_2021.json
    --max-samples 1000
    --per_device_train_batch_size 4
    --per_device_eval_batch_size 4
    --num_train_epochs 10
    --wandb_project thisisatest
    --wandb_api_key <your-api-key>
    --wandb_name simple-test-2

Don't you think the folder structure is a bit over nested?
grants_tagger_light/
├── __init__.py
├── __main__.py
├── __version__.py
├── cli.py
├── download_epmc.py
├── evaluation
│   ├── __init__.py
│   └── evaluate_model.py
├── models
│   ├── __init__.py
│   ├── bert_mesh
│   │   ├── __init__.py
│   │   ├── model.py
│   │   └── pipeline.py
│   └── xlinear
│       ├── __init__.py
│       └── model.py
├── predict.py
├── preprocessing
│   ├── __init__.py
│   └── preprocess_mesh.py
├── training
│   ├── __init__.py
│   ├── cli_args
│   │   ├── __init__.py
│   │   ├── train_args.py
│   │   └── wandb_args.py
│   ├── dataloaders
│   │   ├── __init__.py
│   │   └── dataloaders.py
│   └── train.py
├── tune_threshold.py
└── utils
    ├── __init__.py
    ├── split_data.py
    └── utils.py

Don't you think the folder structure is a bit over nested?
grants_tagger_light/
├── __init__.py
├── __main__.py
├── __version__.py
├── cli.py
├── download_epmc.py
├── evaluation
│   ├── __init__.py
│   └── evaluate_model.py
├── models
│   ├── __init__.py
│   ├── bert_mesh
│   │   ├── __init__.py
│   │   ├── model.py
│   │   └── pipeline.py
│   └── xlinear
│       ├── __init__.py
│       └── model.py
├── predict.py
├── preprocessing
│   ├── __init__.py
│   └── preprocess_mesh.py
├── training
│   ├── __init__.py
│   ├── cli_args
│   │   ├── __init__.py
│   │   ├── train_args.py
│   │   └── wandb_args.py
│   ├── dataloaders
│   │   ├── __init__.py
│   │   └── dataloaders.py
│   └── train.py
├── tune_threshold.py
└── utils
    ├── __init__.py
    ├── split_data.py
    └── utils.py

I like it this way since it lets us add / remove things as part of modules rather than standalone scripts.

Is the DVC pipeline up to date?

I do not see the point of cli_args, can you explain the rationale?

Is the DVC pipeline up to date?

Should be up to date, yeah

I dont think so, unless we are talking about a different pipeline. Did you update pipelines/bertmesh/dvc.yaml?

I do not see the point of cli_args, can you explain the rationale?

So that we may pass arguments to grants-tagger train command which are part of the Huggingface TrainingArguments class without explicitly defining each and every single one using typer Arguments. Also, I have subclassed it to have better defaults for us.
Same for wandb args. I find this is a more elegant way than typer's system.

I do not see the point of cli_args, can you explain the rationale?

So that we may pass arguments to grants-tagger train command which are part of the Huggingface TrainingArguments class without explicitly defining each and every single one using typer Arguments. Also, I have subclassed it to have better defaults for us.
Same for wandb args. I find this is a more elegant way than typer's system.

Ok

Is the DVC pipeline up to date?

Should be up to date, yeah

I dont think so, unless we are talking about a different pipeline. Did you update pipelines/bertmesh/dvc.yaml?

That one no. But that would only have 1 stage. Is it even useful if a pipeline has only 1 stage?

I want a pipeline that reproduces the train that we aim to do. The goal is to record experiments also in dvc not just wandb. So every time you run an experiment it should be via dvc and then commit.


Models Roadmap

Soonish

[x] glTF schema and spec updates
[ ] When repeating an animation, check for parameter[count -1] === parameter[0].
[x] Embedded shaders, textures, and buffers.
[x] Render in and morph to/from Columbus view.  Adjust model scale relative to projection?
[x] Render in and morph to/from 2D.
[x] Remove computeWorldBoundingSphere?
[ ] Consistently name id and name in Cesium API to match glTF spec.
[ ] Add ById versions of functions like getNode?
[ ] How will users know the names of nodes/meshes/materials/parameters?  Through the glTF property or easier to navigate properties?

Later
glTF Features

[x] Compression
[ ] Cube maps
[ ] Cameras

glTF Extensions

[ ] Collision volumes
[x] Binary JSON

Animation

[x] Morphing - #164
[ ] Material animation, including splines with control points of any type.
[ ] Consider skinning with dual quaternions.
[ ] Animation blending, e.g., walk to run cycle.  Section 11.6 in Game Engine Architecture
[ ] Bezier spline

Animation Performance

[ ] Only update the joint matrices if the nodes were targeted by an animation that frame, instead of updating the joint matrices for all skinned nodes.
[ ] Don't animation when culled.  Will still need the right bounding volume: perhaps we can compute it or the user can provide a maximum radius percentage increase.
[ ] updateNodeHierarchyModelMatrix performance ideas with parent pointers.  See @pjcozzi's notes.

Loading Performance

[ ] Fine-grained dependency requests, e.g., compile shader program once required shaders are fetched, not once all shaders are fetched.  See functions called from createResources.
[ ] In general, what can be done on a web worker?

Rendering Performance

[ ] Auto instance when multiple nodes have the same mesh.  This will require copy-on-write if the material for one instance changes, e.g., because it is no longer an instance.
[ ] Compute tighter bounding sphere than using the bounding box's corner points.  Do this as a preprocess in an extra property and fallback to client-side.
[ ] Minimize frustum overlap (SAH-like split) - @bagnell
[ ] Material-aware draw commands, #797 - @bagnell

Cull entire model with a single bounding volumes?

[ ] Pack uniforms.  #649
[ ] Coarse front-to-back sort for early-z.
[x] Investigate DXT-compressing textures in a web worker with Crunch using Emscripten.  This could be useful throughout Cesium.
[ ] Optimize 2D with render-to-texture within a given zoom interval for non-animated/skinned models.
[ ] When allowPicking is false, we should still render depth.

Cesium-Specific Features

[ ] Add helpers to ModelNode to, for example, easily change the scale transform and interop with TRS animations.
[ ] Expose glTF animations with higher-level objects than glTF, e.g., cleanly expose time[0] and the duration.
[x] Expose targetable materials. Extend ModelMesh.
[ ] Support models in KML.
[x] Reuse texture and vertex buffers when loading multiple models.  Probably separate model and instances.
[ ] Attach points.  Need access to node's transform (to root) by name.  The transform can change over time due to animation, user interaction, etc.

Attach vapor trails to the back of a launch vehicle.
Attach a sensor to the front of a UAV.

[ ] Pointing.  Need semantics for sun, other objects, etc. to control direction and up vectors.

Point satellite solar panels to the sun.
Point sensor on aircraft to a ground station.
Point communication dish to satellite.
Point a quad toward the camera, e.g., foliage, explosion, Rudolph's nose, etc.  Need to animate when camera moves, not just when time changes.
Need to limit degrees of freedom, e.g., one rotation for solar panels and two rotations for communication dish.

[x] Shadows
[ ] Interop with the Cesium material system?
[ ] Ability to change states. #1843

CZML

[ ] Schedule animations via CZML, i.e., CZML for calling model.activeAnimations.add.
[ ] Drive model pointing.
[ ] Embed glTF as a CZML extension?  Package together as zip?

Model caching

[ ] Reference counting the animation cache so it is also automatically deleted.
[ ] Ability to invalidate the whole cache or the cache for one url/cache-key
[ ] Avoid potential ping-ponging by delaying actually removing from the cache when the count reaches zero for several frames/seconds.  This may also move all the GL delete functions into the render loop, which would be better for requestAnimationFrame timing (however, perhaps not noticeable).
[ ] Zero out the embedded resources in the glTF to save even more memory?

Viewer

[x] Drag and drop convert COLLADA to glTF via Rest3D web services?

Ecosystem

[x] glTF tutorial series
[ ] Make gltfStatistics a separate library

Potential Ideas

[ ] maximumSizeInPixels so the min/max could be the same and used as a billboard
[ ] For performance, render to texture with depth map when pixel size is constant and there are no animation/light changes (billboarding)

Older
b26
General

[x] Unit tests
[x] Sandcastle example with sample models
[x] Tutorial

Animation

[x] Add offset (in seconds) to ModelAnimation to allow starting an animation "in progress?"
[x] Skinning - #100

Animation - Cesium Splines - @bagnell

[x] Change math in splines to use result parameters
[x] Change splines from AOS to SOA to share time array and for less cache pollution
[x] Optimize splines for decreasing time
[x] Spline for piecewise linear interpolation
[x] Spline for quaternion interpolation with SQUAD

Animation Performance

[x] Fast slerp - @bagnell
[x] Optimize Matrix4.fromTranslationQuaternionRotationScale - @bagnell

Rendering Performance

[x] Preprocess out DeveloperError, #1240 - @bagnell
[x] Use world-space bounding volume in DrawCommand - @bagnell

Cesium Cleanup

[x] Rename attributeIndices to attributeLocations throughout.
[x] Syncup names in UniformDatatype to WebGL.
[x] Replace enum with constants to avoid conversion: IndexDatatype, TextureWrap, TextureMinificationFilter, TextureMagnificationFilter, and PrimitiveType.

@pjcozzi Hi
Is it possible to change the color of a separate model nodes in a cesium latest version v1.113 ?


add WpfGridLayout.Blazor

Thanks.
Released in https://github.com/AdrienTorris/awesome-blazor/releases/tag/v2020.W49


Example: Debugging in IntelliJ

Is there a way to debug from IntelliJ / Webstorm, etc? I can only find documentation for VSCode.

Hey @XaeroDegreaz, not yet. But lemme take a look and put something in!

It "just works" for me in Webstorm if you create an NPM run configuration for the start command and launch it in debug mode:

Hmm.. let me give it a try. And also add some examples for setting up SST in Webstorm and IntelliJ.

We are transition this repo to https://github.com/sst/v2 and are closing this issue for now. If it is still relevant please reopen it there - sorry for the trouble


Issues encountered while using the FulfillmentInbound V2024-03-20 version.

Seeking help... How can I solve these two problems when using FulfillmentInbound V2024-03-20?
When I use FulfillmentInbound.get_shipment, I can't get all the return values, such as shipmentConfirmationId. The official documentation indicates that this return value is optional, but I don't know how to select it.
When I use some methods, I get an error, such as with FulfillmentInbound.update_shipment_delivery_window, which returns [{'code': 'Unauthorized', 'message': 'Access to requested resource is denied.', 'details': ''}].

This seems to be related to an open pull request. Please make sure that the endpoint you're calling actually exists for the version you're using. There's a PR on the way to mark incorrect method usage for versioned endpoints.

Hello!
Just a few preliminary information that may help:
Carefully look at the path for the request: for the /v0/ it was /fba/inbound, for the /2024-03-20/ it is /inbound/fba. This mostly explains the "Access to requested resource is denied"
Some operations have been discontinued from the /v0/ to the /2024-03-20/ and the notice on SP-API docs says the following:
Warning!

All operations other than getLabels, getBillOfLading, and getPrepInstructions are deprecated and will be removed on December 20, 2024.
For continued programmatic access to Fulfillment Inbound, migrate to the Fulfillment Inbound v2024-03-20 API.

Now some questions for @saleweaver :

Is the test suite meant to run against the SANDBOX endpoints? I'm having issues with authentication only on tests
The test suite itself has calls to the discontinued shipments endpoints, I may want to edit or add a few discontinuation-related tests
Since the path changes from inboundFba /v0/ to /2024-03-20/ should we still use the same class and have the sp_endpoint decorator adjust the path, make different methods or separate the class?
Can I reach out to you on Slack for questions like the above?
Thanks


REF/ENH: add parameter routing

Closes #50 #49 #49 and maybe #37
Todo:

[x] Implement
[x] Write tests
[ ] Write docs (may be future PR, would probably address #57 )
[ ] Add doc tests (may be future PR)

Codecov Report

Merging #67 into master will decrease coverage by 1.11%.
The diff coverage is 94.54%.

@@            Coverage Diff             @@
##           master      #67      +/-   ##
==========================================
- Coverage   99.76%   98.65%   -1.12%
==========================================
  Files           3        2       -1
  Lines         432      446      +14
==========================================
+ Hits          431      440       +9
- Misses          1        6       +5

Impacted Files
Coverage Δ

scikeras/_utils.py
96.51% <88.88%> (-2.19%)
:arrow_down:

scikeras/wrappers.py
99.16% <95.65%> (-0.84%)
:arrow_down:

scikeras/__init__.py

Continue to review full report at Codecov.

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

I think this PR is ready for review now. I'll try to provide a review in the next couple days. I would say this PR also closes #18 again.

Could you add some examples of the usage, either in the documentation or in a comment? For me, writing documentation typically leads to API improvements.
It's not a bad idea to start working on the docs along with this. I'm just afraid that that will make a large PR even larger. Would examples from the tests help? I can cherry pick some.

What if I pass optimizer__momentum=0.9 and optimizer="sgd"? Right now, it looks like I'll have to create the Keras optimizer myself and pass that to model.compile. If so, I think work for a future PR is creating the optimizer in BaseWrapper and passing that to the optimizer key.

I agree, but I think that would come after #66

Is this PR backwards compatible for basic usage? It doesn't look like the tests changed much for the basic uses.

Sort of. It breaks if your build_fn was previously expecting parameters like n_outputs_ but it will be backwards compatible as long as build_fn was only expecting build parameters (like hidden_layer_sizes).

@stsievert I addressed several of the comments, leaving two open so you have a chance to look at those again. Do you still want a couple of examples for this API / do you want to write docs as part of this PR?

Do you still want a couple of examples for this API / do you want to write docs as part of this PR?

That'd be great. I think that'd allow me to more easily review this PR, especially if the examples are in .rst files.

What would you think of using model_builder or something other than just model to replace build_fn? I started working on docs and felt that it might be a bit confusing with model and Model.

I started working on docs and felt that it might be a bit confusing with model and Model.

That actually might be an indicator that model is a good name for the function because it returns a Keras Model. If you keep the name (I would), I would refer to the two in distinct ways, probably as "the Keras Model" and "the model parameter." I think the capitalization and monospace text is enough to distinguish the two.

Hmm okay. I'll keep it like that for now. We'll see how the docs look.

@stsievert from discussion in #73 I added:

Force model__ prefix.
Rename build_fn to model with deprecation period.

I think maybe the only thing left to discuss is the name and/or description for compile_kwargs based on https://github.com/adriangb/scikeras/pull/73#discussion_r479821280

Looking back on the original implementation within TF, it looks like **kwargs was actually used for the parameters to build_fn, which means that forcing model__ will be an API break. That does not mean I'm against it, but it is certainly a consideration.

the original implementation within TF, it looks like **kwargs was actually used for the parameters to build_fn, which means that forcing model__ will be an API break.

Then I think that API is worth keeping and should be tested. The documentation should include a note that SciKeras is compatible with the TF wrapper. That will enable easy use of this library; only an import statement needs to be changed.
That is not to say warnings can not be issued, or the implementation can't be impaired. If you'd like, I can mention some workarounds I have in mind.

If you'd like, I can mention some workarounds I have in mind.

Sure, more than welcome!
For this issue in particular, I think if we want to keep the original API, I would like the implications of keeping only that API. I don't want two ways to do things unless there is a clear use case where one of them works and one of them doesn't. The only issue I can think of with keeping only the original API (not using model__) is with subclassed models. I fear that if users want to add an arbitrary parameter, they would be forced to also accept this parameter in build_fn. If that's the case, I see two ways around it:

keep the introspection into build_fn's arguments
somehow make it so that if the user overrides __inti__ then we don't route all parameters. but I don't see how to do this cleanly

some workarounds I have in mind.

The workaround I have in mind involves setting a (hidden) parameter at initialization to keep track of the parameters that should be routed to model_build_fn:
class BaseWrapper:
    def __init__(self, model=None, ..., **keras_params):
        self.model = model
        ...
        vars(self).update(**sk_params)
        self._keras_params = set(keras_params)

    def _model_params(self):
        return {k[len("model__"):]: v
                for k in self.get_params()
                if "model__" in k[:len("model__")] or k in self._keras_params}

I fear that if users want to add an arbitrary parameter, they would be forced to also accept this parameter in build_fn.

Why would this usage fail with the above implementation?
def model_build_fn(hidden=10):
    ...
    return model

class CustomKerasRegressor(KerasRegressor):
    def __init__(self, new_param=1, **kwargs):
        self.new_param = new_param
        super().__init__(**kwargs)

    ... # use new_param in fit/score/etc

With this, I think both of these usages would work:
est = CustomKerasRegressor(model=model_build_fn, hidden=20)
est.fit(X, y).score(X, y)  # say X, y defined somewhere

est2 = CustomKerasRegressor(model=model_build_fn, model__hidden=30)
est.fit(X, y).score(X, y)

The workaround I have in mind involves setting a (hidden) parameter at initialization to keep track of the parameters that should be routed to model_build_fn

Funny enough, that's how the original implementation worked (sort if, it just stored self.kwargs = kwargs, which did not work at all with the scikit-learn API and broke get_params, etc.). I then changed it to store a set and unpack kwargs into self in my first commit.
One minor improvement: if there are no kwargs, don't set the attribute.

class BaseWrapper:
    def __init__(self, model=None, ..., **kwargs):
        self.model = model
        ...
        vars(self).update(**kwargs)
        if kwargs:
            self._init_kwargs = set(kwargs)

    def _model_params(self):
        return {k[len("model__"):]: v
                for k in self.get_params()
                if "model__" == k[:len("model__")] or k in getattr(self, "_init_kwargs", set())}

I think with this + introspecting into the parameters of model_build_fn we should be good. Do you think it will be clear how model_build_fn can "request" arguments from the set self._init_kwargs?

By "this" you mean "keeping backwards compatibility with the Keras API and allowing the prefix model__"?

Yes
Regarding the rest:

That means I think this code should raise a value error because model_build_fn does not accept an argument bar:
def build(foo=42):
    return _get_model(foo)

BaseWrapper(model=build, model__bar=42)  # fails; bar not a valid kwarg to `build`
BaseWrapper(model=build, bar=42)  # fails; bar not a valid kwarg to `build`

I originally thought that the Keras API allowed this:
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
def build_fn(param1=0):
    ...
clf = KerasClassifier(build_fn=build_fn, param1=1, param2=3)
clf.fit(...)

But upon testing, it actually does raise an error:
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
def build_fn(param1=0):
    ...
clf = KerasClassifier(build_fn=build_fn, param1=1, param2=3)  # error
clf.fit(...)

Incidentally, it raises an error from __init__, which as you suggested is wrong.
This confirms what I guess you were assuming or knew, which is that raising an error is compatible with the old API. That being the case, I am 100% +1 for doing the same. Sorry for the confusion otherwise.

Thank you for this last round of review @stsievert. I added the two pending comments/items to the OP to keep things a bit organized.

I'll need at least one more review; I'll try to provide one this weekend.

Great, TY for your help thus far

@stsievert are you able to take another look at this? Thanks.

I expected the optimizer key in compile_kwargs to be the rendered optimizer. I expected this test to pass:

That will be the work of #66, too much for this PR in my opinion.

That will be the work of #66, too much for this PR in my opinion.

:+1: I don't see reason to hold back on merge; nothing immediately jumps out.


TriggerSetConfig is undefined until manually set by the user

Plugin Version
OverlayPlugin.dll        <IP_ADDRESS>
CactbotOverlay.dll       <IP_ADDRESS>
Reproduce
create a user.js
Options.Triggers.push({
  id: "test 20230504",
  zoneId: ZoneId.MatchAll,
  config: [
    {
      id: "test001",
      name: { en: "test001" },
      type: "select",
      options: { en: { a: "a", b: "b" } },
      default: "b",
    },
    {
      id: "test002",
      name: { en: "test002" },
      type: "select",
      options: { en: { a: "a", b: "b" } },
      default: "b",
    },
    {
      id: "test003",
      name: { en: "test003" },
      type: "checkbox",
      default: () => {
        return true;
      },
    },
    {
      id: "test004",
      name: { en: "test004" },
      type: "string",
      default: () => {
        return 'default string';
      },
    },
  ],
  triggers: [
    {
      id: "test triggerSetConfig 20230504",
      type: "GameLog",
      netRegex: NetRegexes.echo({ line: "test", capture: false }),
      run: (data, _matches) => {
        console.log("test", data.triggerSetConfig);
      },
    },
  ],
});

then i /e test to run trigger
print is {}

After I manually set the option for 002 and reload raidboss

only test002 have value, other key is undefined.

Thanks for the example.  I see at least one bug, so I'll try to get a fix in soon.

@Souma-Sumire Do you have a local cactbot development set up, or do I need to do a release with #5381 before you can use this?

@Souma-Sumire Do you have a local cactbot development set up, or do I need to do a release with #5381 before you can use this?

Sorry, I don’t have a local development environment. I failed in step two of Steps to build plugin.

@Souma-Sumire Do you have a local cactbot development set up, or do I need to do a release with #5381 before you can use this?

~Sorry, I don’t have a local development environment.I don't know how to debug the config page.~
~Edit: Maybe I got it. Wait a minute.~
Edit: Yes I think this issue has been fixed by #5381!

Ok, glad you got it sorted! I didn't see this so did a release anyway.  Let me know if there are any further issues.


Remove MAX_STREAMS check on client side connection pool. (#963)

The reason for this is that we already have protection via circuit breakers.
There is no point in having additional protection (other than potentially
for push, which we don't support currently, and can deal with later). If we
overflow the other side, the code will correctly handle the REFUSED_STREAM
reset that happens.

background and discussion is here: #981
for the unit test, it seems the whole TEST_F(Http2ConnPoolImplTest, MaxRequests) is for
the max_concurrent_request thing, so i delete it.


Courses created with provisioned status missing folder

The issue tracker is for reporting product deficiencies. "How do I?" questions should be posted to the discussion forum at https://groups.google.com/group/google-apps-manager. When in doubt, start at the discussion forum and return here only when instructed to do so.
Please confirm the following:

I have upgraded to the latest GAM release from https://git.io/gamreleases and I still have this issue.
I am typing the command as described in the GAM Wiki at https://github.com/jay0lee/gam/wiki

Full steps to reproduce the issue:

Create a course with someone else as the teacher.  Do not set a status.
Have the teacher accept the course.
Check the teacher's classroom and drive.

Expected outcome (what are you trying to do?):
After the teacher activates the course, a new folder should appear in his Classroom folder in Drive.  There should be a link to it from the course's card on his Classroom home page, and on the Course's about tab.
Actual outcome (what errors or bad behavior do you see instead?):
The folder icon is greyed out on the card on the home page, and is completely missing from the about tab.  The folder is not in Drive.
If I create the course with status active, the folder works correctly.  Setting the status from GAM does not fix a course.
If I create a course with myself as the teacher, the problem does not occur.
Thanks,
Matt

I can confirm this is a live issue.  I'm having the same problem when creating classrooms.  The version I'm using is 4.23

As a follow-up question, what happens if you, I mean the teacher, add an assignment and publish, and then have a student submit the assignment? Is the folder then created, or where does that student's submitted document go?

NoSubstitute,
The folders were created and  everything worked properly.  It looks like this will not be a problem after all.
Thanks,
Matt


Support --use-core and --ctypes-prefix

As requested in https://github.com/Yamakaky/rust-bindgen/issues/400#issuecomment-258632805.
r? @fitzgen

@bors-servo delegate=fitzgen

:v: @fitzgen can now approve this pull request

Wow, that was fast. Thank you!

@bors-servo r=fitzgen

:pushpin: Commit 6611276 has been approved by fitzgen

:hourglass: Testing commit 6611276 with merge 8c737ec...

:sunny: Test successful - status-travis

Doesn't seem to output core in every instance, e.g. this is the output of the func_ptr.h test:
/* automatically generated by rust-bindgen */

extern "C" {
    #[link_name = "foo"]
    pub static mut foo:
               ::std::option::Option<unsafe extern "C" fn(x:
                                                              ::std::os::raw::c_int,
                                                          y:
                                                              ::std::os::raw::c_int)
                                         -> ::std::os::raw::c_int>;
}

@jdub good catch, that's a one-off :)
https://github.com/servo/rust-bindgen/pull/229


Safebooru/Gelbooru no longer working

On 1.4.8 (windows)
I assume they altered their API since a few other things I use that pull from SB/GB are also a bit broken atm

http://gelbooru.com/index.php?page=forum&s=view&id=3640
Seems like they've disabled the API as a temporary solution to someone abusing it.

Looks like the api has been re-enabled for now.


Fix Job response not read and closed (#5340) - backport

(cherry picked from commit 6901bf9f2bbb352a4a3d8d376f4575ed0f4cc89b)

Goede backport maar

of junit5 introduceren in de 7.8-release branch
of de test imports fixen


#140 - moved target out of descriptor into authorization

@thehenrytsai is the target needed to be able to address a DWN with any message? If so, what happens when we allow unauthenticated queries?

@csuwildcat, yes, target is always needed by DWN to route message correctly. Let's sync on unauthenticated queries and move target (again) if needed.


Using a token on lock

Is it possible to set the 'key' option on a lock operation?
I'm trying to do the equivalent of
consul lock -name='ConsulSync' -pass-stdin -token=$TOKEN service/us/locks/foo child_command
My code is
var lock_options = {  key : 'service/us/locks/foo',
                      name : 'ConsulSync',
                      token : process.env.TOKEN
                   };

var lock = consul.lock(lock_options);
```

but I'm getting a 403 "rpc error: Permission denied"

Also, can I set 'pass-stdin'?

Good call, I'll try  to get this fixed in the next couple of days.
As a work around, if you don't mind using the same token for all your calls you can set it as a default.
var consul = require('consul')({ defaults: { token: 'mytoken' } });

var lock = consul.lock({ key: 'test' });

That should work for me.  Thanks.


feat(#158): kill detached process on win

In this pull I've implemented kill(port) for killing detached process on windows platform, and enabled accepts_request_in_detached_mode integration test on windows platform.
closes #158

PR-Codex overview
The focus of this PR is to add support for killing ports on Windows platform in the CLI integration tests.
Detailed summary

Added npm install kill-port in justfile
Added Windows-specific logic for detached process flag in main.rs
Updated integration tests to handle port killing on Windows platform

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@l3r8yJ something gets wrong with exiting of the test:
test tests::accepts_request_in_detached_mode has been running for over 60 seconds

Maybe you do know how to fix that?

@h1alexbel I think that use killport from npx is not a good idea, i'll refactor a bit this part

@l3r8yJ I will try to check problematic test on real windows then

@l3r8yJ I checked out this branch on windows. It looks like server starts in blocking mode, but it should be detached. Probably some flags are misused


[rlgl] Alpha blending is broken

[x] I tested it on latest raylib version from master branch
[x] I checked there is no similar issue already reported
[x] My code has no errors or misuse of raylib

Issue description
The current alpha blending is broken, while the RGB channels are fine, the alpha channel results are incorrect.
Here's how it's implemented now:
case RL_BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_ADD); break;
For example, if you have an src alpha 0.5 and dest alpha 1.0, the resulting alpha will be equal to this:
0.5 * 0.5 + 1.0 * (1.0 - 0.5) = 0.75
Which is obviously incorrect.
I think proper blending should be implemented like this:
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
Environment
Windows 8.1 64x
ATI Technologies Inc.
AMD Radeon HD 8330
GLSL 4.60
Issue Screenshot
I tried to draw a semi-transparent texture on RenderTexture2D cleaned with #463136FF and then draw this RenderTexture2D on screen cleaned with RAYWHITE.

I exported my RenderTexture2D to a .png image and those white pixels were transparent.

Can I download the image you're using? To me this looks like a problem with your image and not necessarily raylib, but I would like to check to make sure this is the case.

I can't provide you this image at the moment, but this problem has been reproducted by another user on discord. This happens with any semitransparent image actually.

@rmn20 I'm afraid glBlendFuncSeparate() requires OpenGL 4.0 and raylib uses OpenGL 3.3 by default or even older versions.
Could this issue be related to https://github.com/raysan5/raylib/issues/1121?

I believe glBlendFuncSeparate is available since OpenGL 1.4 :)
I think this is the same problem as in 1121.

@rmn20 You are right, it seems it was added into core on OpenGL 2.0, I confused it with glBlendFuncSeparatei() while looking at the official specs.
In any case, did you try the solution proposed in #1121?

I haven't tried it yet, but it should work fine in my program, I don't need an alpha channel here.


chore(checkbox): upgrade to mdcw 2.x

related to #885

Codecov Report

Merging #888 into rc0.13.0 will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           rc0.13.0     #888   +/-   ##
=========================================
  Coverage     93.98%   93.98%
=========================================
  Files            85       85
  Lines          3576     3576
  Branches        560      560
=========================================
  Hits           3361     3361
  Misses           90       90
  Partials        125      125

Continue to review full report at Codecov.

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


Baseline

I am so sorry to delete the comments a person recently proposed. Good.
This problem is about baseline. So, I paste the baseline link below,
https://github.com/zouguojian/Traffic-speed-prediction/tree/main/3S-TBLN/baselines.
Best,
Guojian


Replace Gradle Enterprise with Develocity

WARNING: The following functionality has been deprecated and will be removed in the next major release of the Develocity Gradle plugin:
- The deprecated "gradleEnterprise.buildScan.publishAlwaysIf(condition)" API has been replaced by "develocity.buildScan.publishing.onlyIf { condition }"
- The deprecated "gradleEnterprise.buildScan.termsOfServiceUrl" API has been replaced by "develocity.buildScan.termsOfUseUrl"
- The deprecated "gradleEnterprise.buildScan.termsOfServiceAgree" API has been replaced by "develocity.buildScan.termsOfUseAgree"
- The "com.gradle.enterprise" plugin has been replaced by "com.gradle.develocity"

Hi, i can do this
https://github.com/JavierSegoviaCordoba/hubdle/pull/910

Thank you for your contribution :D


Added check_run and check_suite triggers to the debug Workflow

Current dependencies on/for this PR:

main

PR #733   👈

PR #734

This comment was auto-generated by Graphite.

Graphite Merge Job
Current status: 🔄 Waiting for checks to pass
This pull request is currently waiting for CI and mergeability checks to pass before being merged.
This comment was auto-generated by Graphite.

Job Reference: IecChLlE4dZsrxrrQgky


Ability to Resize Result Set Columns

As a user of sqliteviz,
in order to better read the values in the result set,
I want to be able to resize the column widths of the result.
Is there currently a way to do this? I wasn't able to resize the columns of the result set view in Google Chrome but maybe there is a way to do this that I'm not aware of?
Also, I didn't see a contributing guideline and based the story above off of another issue enhancement @lana-k put up.

For now, resizing columns in a query result is not implemented.

@bradlangel In the latest release 0.24.1 the value panel was added (#115). If you click on the table cell representing a result set you can see the value in that new panel. Try it and let me know if it solves your request.


Added the exact doc string recommended in the comment

Just added the struct docstring for #233

You've got to add an internal link to get scope() to link properly. I recently did a bunch of these, have a look at how to do it:
https://github.com/leshow/rayon/commit/c4928f73efe15f5f4b538a518455d719d5b8575f

I'll update it!


Fix miscellaneous Coverity issues

This fixes all but 5 of the outstanding Coverity issues. All the rest have either been flagged as "False positives" or for some other reasons flagged as "Ignore". The remaining 5 or all related to SM2 which I have deliberately ignored for now due to some outstanding SM2 related PRs which I think may fix some of them.
One issue fixed here was found by me not Coverity, but it was found while I was investigating a different Coverity issue (which ultimately turned out to be a false positive), so I included it anyway.

Added a comment in each location where this change was made in line with @dot-asm's suggestion. @richsalz can you reconfirm?

Sure, reconfirm.  Adding comments seems to be okay.  Or as @dot-asm says, "complain now if you don't think original approval still holds." :)

Pushed. Thanks.


Minor Updates

The significant changes contained in this pull requests are:
1.0.1

Added change log
Added support for reading environment variables from .env
Updated Node and npm versions
Added TravisCI badge to readme
Added schema for 'Article', making the 'title' field to be required, so that the unit test "should be able to show an error when try to save without title" passes

These changes look great; thanks for these updates, @Chieze-Franklin! 🎉


Fix for AMD & Symbol polyfill race condition

Issue Summary
There is a race condition when using AMD for older browsers that use a Symbol polyfill. https://github.com/rtfeldman/seamless-immutable/blob/7.1.3/src/seamless-immutable.js#L7 this line detects whether a Symbol polyfill is used. However, immutableInit is called outside of define for AMD (https://github.com/rtfeldman/seamless-immutable/blob/7.1.3/src/seamless-immutable.js#L742).
If a polyfill is in a separate bundle than Seamless, there is a race condition, and if Seamless loads before the polyfill, browsers that use the polyfill crash, because they don't break early on React elements.
Fix

Calls immutableInit inside define, fixing race condition.
Based on https://github.com/rtfeldman/seamless-immutable/pull/249 fork, because master spec's don't pass in CI.

@ndreckshage looks reasonable. Can you rebase it on current master, or submit a new PR with only your changes? The CI build has been fixed and additional commits were added to it.
And you can either rebuild the conflicting files or leave them out, I will do a build after merging anyway.


[Image Hub] generate EnvoyFilter yaml with json config for the rate limit filter

Description
This PR fixes #215
Notes for Reviewers

Adds the ability to generate the EnvoyFilter configuration for the rate limit filter.
Generated config have JSON objects (base64 encoded) containing the configuration for changing the behaviour of Image Hub's rate limit filter.
Has a lot of scope of refactoring. :P

NOTE: This has been partially tested by deploying Image Hub and applying the "Envoy Filter for Image Hub" operation. The operation is applied successfully and without any errors.
However, at the moment I'm unable to access either of the Image Hub UI or the endpoints. I'm looking into it and thus whether the filter reads and applies the logic in the base64 value successfully has still to be tested.
Signed commits

[x] Yes, I signed my commits.

Excellent, @DelusionalOptimist! Will you walk through this in tomorrow’s Meshery Dev Meeting?

This is exciting.

Sure! A demo would be very cool 😁
I'll also try to debug Image Hub in the meantime as it would be great to have a complete demo with proof that the wasm filter reads the configuration correctly. Either way, this shouldn't stop us from having a demo in this Meshery dev meeting at all ✌.

💥

@kumarabd @Lee as we'll be approaching filter configuration using patterns, I don't think we'll be needing this.
Let's close this. :heavy_check_mark:

Thank you, @DelusionalOptimist


⚠ Bofrost.be has degraded performance

In 2c462f1, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1064 ms

Resolved: Bofrost.be performance has improved in 0bea53f after 14 minutes.


feat(usbboot): log progress to DevTools

The logic here can then be plugged into the GUI and display an inline
progress bar in the drive selector modal.
Change-Type: patch
Changelog-Entry: Log usbboot progress in DevTools
Signed-off-by: Juan Cruz Viotti<EMAIL_ADDRESS>

This PR depends on https://github.com/resin-io/etcher/pull/1775

This is how it looks like:

I'm not sure if i makes sense to increment the progress when config.txt gets read a second or third time? :confused:
For this initial implementation it's probably easiest to just treat BCM2835 and BCM2837 as identical - for the files in #1775 they both read 6 files in total (excluding the duplicated config.txt) and 9 file-requests in total (including the duplicated config.txt - i.e. config.txt gets read 4 times). And both numbers exclude the bootcode.bin that gets sent in the first stage.
Also, there's a noticeable delay between the last file being sent (and the 2nd-stage boot-server 'disappearing') and the virtual MSD actually appearing, while the kernel boots up and does its stuff - not sure how you want to handle that in the Etcher UI?

I'm not sure if i makes sense to increment the progress when config.txt gets read a second or third time? 😕

Well, they are truly different steps inside the usb boot implementation.

For this initial implementation it's probably easiest to just treat BCM2835 and BCM2837 as identical - for the files in #1775 they both read 6 files in total (excluding the duplicated config.txt) and 9 file-requests in total (including the duplicated config.txt - i.e. config.txt gets read 4 times). And both numbers exclude the bootcode.bin that gets sent in the first stage.

Does that account to exactly 38 request commands as with the Amber?

Also, there's a noticeable delay between the last file being sent (and the 2nd-stage boot-server 'disappearing') and the virtual MSD actually appearing, while the kernel boots up and does its stuff - not sure how you want to handle that in the Etcher UI?

Yeah, not much we can do about it I guess. Just reporting 100% and having the user wait for a couple of seconds should be good enough for now.

For CM1:
$ sudo ~/github/raspberrypi/usbboot/rpiboot -d usbboot -v
[sudo] password for andrew:
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
Found serial number 0
Sending bootcode.bin
libusb_bulk_transfer sent 24 bytes; returned 0
Writing 50248 bytes
libusb_bulk_transfer sent 50248 bytes; returned 0
Successful read 4 bytes
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
Found serial number 1
Second stage boot server
Received message GetFileSize: autoboot.txt
Cannot open file autoboot.txt
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: start_cd.elf
File size = 666404 bytes
Received message ReadFile: start_cd.elf
File read: start_cd.elf
libusb_bulk_transfer sent 666404 bytes; returned 0
Received message GetFileSize: fixup_cd.dat
File size = 2594 bytes
Received message ReadFile: fixup_cd.dat
File read: fixup_cd.dat
libusb_bulk_transfer sent 2594 bytes; returned 0
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: dt-blob.bin
Cannot open file dt-blob.bin
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: bootcfg.txt
Cannot open file bootcfg.txt
Received message GetFileSize: cmdline.txt
Cannot open file cmdline.txt
Received message GetFileSize: recovery.img
Cannot open file recovery.img
Received message GetFileSize: kernel.img
File size = 11696408 bytes
Received message GetFileSize: armstub.bin
Cannot open file armstub.bin
Received message GetFileSize: kernel.img
File size = 11696408 bytes
Received message ReadFile: kernel.img
File read: kernel.img
libusb_bulk_transfer sent 11696408 bytes; returned 0
Received message GetFileSize: bcm2708-rpi-cm.dtb
File size = 15053 bytes
Received message ReadFile: bcm2708-rpi-cm.dtb
File read: bcm2708-rpi-cm.dtb
libusb_bulk_transfer sent 15053 bytes; returned 0
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: overlays/dwc2.dtbo
File size = 852 bytes
Received message ReadFile: overlays/dwc2.dtbo
File read: overlays/dwc2.dtbo
libusb_bulk_transfer sent 852 bytes; returned 0
Received message Done: overlays/dwc2.dtbo
Second stage boot server done

For CM3:
$ sudo ~/github/raspberrypi/usbboot/rpiboot -d usbboot -v
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
Found serial number 0
Sending bootcode.bin
libusb_bulk_transfer sent 24 bytes; returned 0
Writing 50248 bytes
libusb_bulk_transfer sent 50248 bytes; returned 0
Successful read 4 bytes
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
Found serial number 1
Second stage boot server
Received message GetFileSize: autoboot.txt
Cannot open file autoboot.txt
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: start_cd.elf
File size = 666404 bytes
Received message ReadFile: start_cd.elf
File read: start_cd.elf
libusb_bulk_transfer sent 666404 bytes; returned 0
Received message GetFileSize: fixup_cd.dat
File size = 2594 bytes
Received message ReadFile: fixup_cd.dat
File read: fixup_cd.dat
libusb_bulk_transfer sent 2594 bytes; returned 0
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: dt-blob.bin
Cannot open file dt-blob.bin
Received message GetFileSize: recovery.elf
Cannot open file recovery.elf
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: bootcfg.txt
Cannot open file bootcfg.txt
Received message GetFileSize: cmdline.txt
Cannot open file cmdline.txt
Received message GetFileSize: recovery8.img
Cannot open file recovery8.img
Received message GetFileSize: recovery8-32.img
Cannot open file recovery8-32.img
Received message GetFileSize: recovery7.img
Cannot open file recovery7.img
Received message GetFileSize: recovery.img
Cannot open file recovery.img
Received message GetFileSize: kernel8.img
Cannot open file kernel8.img
Received message GetFileSize: kernel8-32.img
Cannot open file kernel8-32.img
Received message GetFileSize: kernel7.img
File size = 15155200 bytes
Received message GetFileSize: armstub8.bin
Cannot open file armstub8.bin
Received message GetFileSize: armstub8-32.bin
Cannot open file armstub8-32.bin
Received message GetFileSize: armstub7.bin
Cannot open file armstub7.bin
Received message GetFileSize: armstub.bin
Cannot open file armstub.bin
Received message GetFileSize: kernel7.img
File size = 15155200 bytes
Received message ReadFile: kernel7.img
File read: kernel7.img
libusb_bulk_transfer sent 15155200 bytes; returned 0
Received message GetFileSize: bcm2710-rpi-cm3.dtb
File size = 16517 bytes
Received message ReadFile: bcm2710-rpi-cm3.dtb
File read: bcm2710-rpi-cm3.dtb
libusb_bulk_transfer sent 16517 bytes; returned 0
Received message GetFileSize: config.txt
File size = 104 bytes
Received message ReadFile: config.txt
File read: config.txt
libusb_bulk_transfer sent 104 bytes; returned 0
Received message GetFileSize: overlays/dwc2.dtbo
File size = 852 bytes
Received message ReadFile: overlays/dwc2.dtbo
File read: overlays/dwc2.dtbo
libusb_bulk_transfer sent 852 bytes; returned 0
Received message Done: overlays/dwc2.dtbo
Second stage boot server done

I don't think it makes sense to count the files that don't actually exist e.g. the armstub files (which is where I assume your '38 requests' comes from?), because they'll be 'responded to' instantly, whereas files that do exist will take longer to respond to. Unless you wanted to get fancy and allocate the update-percentage based on each file's size as a proportion of the whole? But then you'd have the single kernel.img file being a single sudden jump of 90% progress ;-)

Also, there's a noticeable delay between the last file being sent (and the 2nd-stage boot-server 'disappearing') and the virtual MSD actually appearing, while the kernel boots up and does its stuff - not sure how you want to handle that in the Etcher UI?

Yeah, not much we can do about it I guess. Just reporting 100% and having the user wait for a couple of seconds should be good enough for now.

Perhap's that's where @alexandrosm 's "Hypothetical Devices" come in to save the day? :)
Oh, perhaps we're looking at this from two different viewpoints!? I'm thinking of the current behaviour, where the usbboot device actually disappears from the drive-selection window while the kernel boots up, but perhaps you mean that after this PR, the device will just stay displaying at 100% progress until the actual blockdevice shows up?

I don't think it makes sense to count the files that don't actually exist e.g. the armstub files (which is where I assume your '38 requests' comes from?), because they'll be 'responded to' instantly, whereas files that do exist will take longer to respond to.

They still take some time to complete (i.e. 200-500 ms), and arguably they do consist of different steps, that are simply responded with a null buffer.

But then you'd have the single kernel.img file being a single sudden jump of 90% progress ;-)

I don't think there's much we can do about that.

Oh, perhaps we're looking at this from two different viewpoints!? I'm thinking of the current behaviour, where the usbboot device actually disappears from the drive-selection window while the kernel boots up, but perhaps you mean that after this PR, the device will just stay displaying at 100% progress until the actual blockdevice shows up?

The device should not disappear from the drive selector widget for UX purposes. We can either keep displaying the USB device with a 100% percentage or a hypothetical device.

Awesome, I added some basic code to decide on which hardcoded number of steps to use. We will hopefully implement this in a more elegant once we have proper device discovery.

The device should not disappear from the drive selector widget for UX purposes. We can either keep displaying the USB device with a 100% percentage or a hypothetical device.

If the USB addresses indeed stay unique per-device regardless of which 'mode' they're in, I guess we could continue displaying a 100% progress bar until we see a device with a matching USB address and VID:PID of the g_mass_storage device (i.e. VID 0x0525 and PID 0xa4a5).

Could we return the progress with the device object? I guess it might need a re-architecture of the sdk to easily allow for that using EventEmitters for more fine-tuned control of when the scan event happens and returns drives.

If the USB addresses indeed stay unique per-device regardless of which 'mode' they're in...

I've finally got round to testing this PR, and unfortunately these USB addresses aren't persistent :-(
When testing on Win7, I get this (edited DevTools Console log) for the CM1:
 sdk:usbboot Opening device: 1:2 (0x0a5c:0x2763) +0ms
 sdk:usbboot Claiming interface: 0 +0ms
 sdk:usbboot Serial number index: 0 +15ms
 sdk:usbboot [1:2] (0x0a5c:0x2763) -> 10% +0ms
 sdk:usbboot Writing bootcode +29ms
 sdk:usbboot Bootcode buffer length: 50248 +2ms
 sdk:usbboot Writing boot message buffer to out endpoint +6ms
 sdk:usbboot Writing boot code buffer to out endpoint +1s
 sdk:usbboot Reading return code from device +1s
 sdk:usbboot Received return code: 0 +0ms
 sdk:usbboot Opening device: 1:2 (0x0a5c:0x2764) +2s
 sdk:usbboot Claiming interface: 0 +3ms
 sdk:usbboot Serial number index: 1 +4ms
 sdk:usbboot Starting file server +2ms
 sdk:usbboot [1:2] (0x0a5c:0x2764) -> 15% +3ms

and this for the CM3:
 sdk:usbboot Opening device: 3:2 (0x0a5c:0x2764) +0ms
 sdk:usbboot Claiming interface: 0 +9ms
 sdk:usbboot Serial number index: 0 +7ms
 sdk:usbboot [3:2] (0x0a5c:0x2764) -> 10% +1ms
 sdk:usbboot Writing bootcode +3s
 sdk:usbboot Bootcode buffer length: 50248 +0ms
 sdk:usbboot Writing boot message buffer to out endpoint +1ms
 sdk:usbboot Writing boot code buffer to out endpoint +2s
 sdk:usbboot Reading return code from device +1s
 sdk:usbboot Received return code: 0 +297ms
 sdk:usbboot Opening device: 1:2 (0x0a5c:0x2764) +8s
 sdk:usbboot Claiming interface: 0 +0ms
 sdk:usbboot Serial number index: 1 +0ms
 sdk:usbboot Starting file server +0ms
 sdk:usbboot [1:2] (0x0a5c:0x2764) -> 15% +0ms

And testing on Linux, I get this for the CM1:
 sdk:usbboot Opening device: 2:122 (0x0a5c:0x2763) +0ms
 sdk:usbboot Claiming interface: 0 +2ms
 sdk:usbboot Serial number index: 0 +1ms
 sdk:usbboot [2:122] (0x0a5c:0x2763) -> 10% +1ms
 sdk:usbboot Writing bootcode +10ms
 sdk:usbboot Bootcode buffer length: 50248 +1ms
 sdk:usbboot Writing boot message buffer to out endpoint +1ms
 sdk:usbboot Writing boot code buffer to out endpoint +1s
 sdk:usbboot Reading return code from device +1s
 sdk:usbboot Received return code: 0 +1ms
 sdk:usbboot Opening device: 2:123 (0x0a5c:0x2764) +4s
 sdk:usbboot Claiming interface: 0 +325ms
 sdk:usbboot Serial number index: 1 +1ms
 sdk:usbboot Starting file server +0ms
 sdk:usbboot [2:123] (0x0a5c:0x2764) -> 15% +1ms

and this for the CM3:
 sdk:usbboot Opening device: 2:14 (0x0a5c:0x2764) +0ms
 sdk:usbboot Claiming interface: 0 +2ms
 sdk:usbboot Serial number index: 0 +2ms
 sdk:usbboot [2:14] (0x0a5c:0x2764) -> 10% +0ms
 sdk:usbboot Writing bootcode +13ms
 sdk:usbboot Bootcode buffer length: 50248 +1ms
 sdk:usbboot Writing boot message buffer to out endpoint +1ms
 sdk:usbboot Writing boot code buffer to out endpoint +1s
 sdk:usbboot Reading return code from device +1s
 sdk:usbboot Received return code: 0 +2ms
 sdk:usbboot Opening device: 2:16 (0x0a5c:0x2764) +4s
 sdk:usbboot Claiming interface: 0 +1ms
 sdk:usbboot Serial number index: 1 +1ms
 sdk:usbboot Starting file server +0ms
 sdk:usbboot [2:16] (0x0a5c:0x2764) -> 15% +1ms

(I've got no idea why the USB addresses do stay persistent for the CM1 on Windows but not for the CM3! :confused: )
Also, as this progress-code thinks that the CM1 in 'stage2' is actually a CM3, the last part of the progress-log looks like:
 sdk:usbboot Received message: ReadFile -> overlays/dwc2.dtbo +15ms
 sdk:usbboot Reading overlays/dwc2.dtbo +2ms
 sdk:usbboot Starting again +1s
 sdk:usbboot Listening for file messages (step 29) +0ms
 sdk:usbboot [1:2] (0x0a5c:0x2764) -> 77% +0ms
 sdk:usbboot Received message: Done -> overlays/dwc2.dtbo +1s
 sdk:usbboot Done +0ms
 sdk:usbboot [1:2] (0x0a5c:0x2764) -> 100% +0ms

note the sudden jump from 77% to 100%, whereas the CM3 jumps from 93% to 100%.

I'll attach a full CM1 log below (from Windows), where you can also see that the progress-bar seems to re-start at the very end! (the CM3 does the same).
app.js:74  _____ _       _
|  ___| |     | |
| |__ | |_ ___| |__   ___ _ __
|  __|| __/ __| '_ \ / _ \ '__|
| |___| || (__| | | |  __/ |
\____/ \__\___|_| |_|\___|_|

Interested in joining the Etcher team?

One thing to be aware of here is that it's possible to 'usbboot' a PiZero with no SD card inserted, which obviously means that no new MSD then appears - would we just remain displaying a 100% progress bar, or should it eventually time out?

They still take some time to complete (i.e. 200-500 ms), and arguably they do consist of different steps, that are simply responded with a null buffer.

200ms seems like a massive over-estimate to me, so I added some crude time-stamp code to rpiboot, which gives me the following log:
$ sudo ~/github/raspberrypi/usbboot/rpiboot -d usbboot -v
[sudo] password for andrew:
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
[0.147] Found serial number 0
[0.1472 (+0.000047)] Sending bootcode.bin
[0.1474 (+0.000255)] libusb_bulk_transfer sent 24 bytes; returned 0
[0.1475 (+0.000038)] Writing 50248 bytes
[0.1530 (+0.005560)] libusb_bulk_transfer sent 50248 bytes; returned 0
[1.1533 (+1.000281)] Successful read 4 bytes
Waiting for BCM2835/6/7
Device located successfully
Initialised device correctly
[4.2305 (+3.077164)] Found serial number 1
[4.2305 (+0.000025)] Second stage boot server
[4.2309 (+0.000373)] Received message GetFileSize: autoboot.txt
[4.2310 (+0.000133)] Cannot open file autoboot.txt
[4.2313 (+0.000326)] Received message GetFileSize: config.txt
[4.2394 (+0.008045)] File size = 104 bytes
[4.2399 (+0.000495)] Received message ReadFile: config.txt
[4.2399 (+0.000025)] File read: config.txt
[4.2402 (+0.000263)] libusb_bulk_transfer sent 104 bytes; returned 0
[4.2409 (+0.000682)] Received message GetFileSize: recovery.elf
[4.2410 (+0.000187)] Cannot open file recovery.elf
[4.2414 (+0.000322)] Received message GetFileSize: start_cd.elf
[4.2417 (+0.000329)] File size = 666404 bytes
[4.2421 (+0.000391)] Received message ReadFile: start_cd.elf
[4.2421 (+0.000020)] File read: start_cd.elf
[4.8123 (+0.570200)] libusb_bulk_transfer sent 666404 bytes; returned 0
[4.8128 (+0.000461)] Received message GetFileSize: fixup_cd.dat
[4.8209 (+0.008089)] File size = 2594 bytes
[4.8214 (+0.000522)] Received message ReadFile: fixup_cd.dat
[4.8214 (+0.000041)] File read: fixup_cd.dat
[4.8239 (+0.002435)] libusb_bulk_transfer sent 2594 bytes; returned 0
[4.8579 (+0.034000)] Received message GetFileSize: recovery.elf
[4.8580 (+0.000130)] Cannot open file recovery.elf
[4.8583 (+0.000358)] Received message GetFileSize: config.txt
[4.8584 (+0.000050)] File size = 104 bytes
[4.8589 (+0.000518)] Received message ReadFile: config.txt
[4.8589 (+0.000019)] File read: config.txt
[4.8592 (+0.000278)] libusb_bulk_transfer sent 104 bytes; returned 0
[4.8599 (+0.000694)] Received message GetFileSize: dt-blob.bin
[4.8601 (+0.000170)] Cannot open file dt-blob.bin
[4.8916 (+0.031532)] Received message GetFileSize: recovery.elf
[4.8918 (+0.000166)] Cannot open file recovery.elf
[4.8921 (+0.000317)] Received message GetFileSize: config.txt
[4.8921 (+0.000043)] File size = 104 bytes
[4.8925 (+0.000411)] Received message ReadFile: config.txt
[4.8926 (+0.000014)] File read: config.txt
[4.8928 (+0.000238)] libusb_bulk_transfer sent 104 bytes; returned 0
[4.9629 (+0.070084)] Received message GetFileSize: bootcfg.txt
[4.9630 (+0.000165)] Cannot open file bootcfg.txt
[4.9637 (+0.000701)] Received message GetFileSize: cmdline.txt
[4.9639 (+0.000160)] Cannot open file cmdline.txt
[4.9645 (+0.000573)] Received message GetFileSize: recovery8.img
[4.9647 (+0.000206)] Cannot open file recovery8.img
[4.9652 (+0.000472)] Received message GetFileSize: recovery8-32.img
[4.9653 (+0.000163)] Cannot open file recovery8-32.img
[4.9658 (+0.000531)] Received message GetFileSize: recovery7.img
[4.9660 (+0.000159)] Cannot open file recovery7.img
[4.9664 (+0.000444)] Received message GetFileSize: recovery.img
[4.9666 (+0.000172)] Cannot open file recovery.img
[4.9671 (+0.000469)] Received message GetFileSize: kernel8.img
[4.9673 (+0.000173)] Cannot open file kernel8.img
[4.9678 (+0.000491)] Received message GetFileSize: kernel8-32.img
[4.9679 (+0.000171)] Cannot open file kernel8-32.img
[4.9683 (+0.000369)] Received message GetFileSize: kernel7.img
[4.9683 (+0.000052)] File size = 15155200 bytes
[4.9688 (+0.000490)] Received message GetFileSize: armstub8.bin
[4.9690 (+0.000152)] Cannot open file armstub8.bin
[4.9693 (+0.000362)] Received message GetFileSize: armstub8-32.bin
[4.9695 (+0.000139)] Cannot open file armstub8-32.bin
[4.9699 (+0.000421)] Received message GetFileSize: armstub7.bin
[4.9700 (+0.000134)] Cannot open file armstub7.bin
[4.9704 (+0.000368)] Received message GetFileSize: armstub.bin
[4.9705 (+0.000128)] Cannot open file armstub.bin
[4.9709 (+0.000375)] Received message GetFileSize: kernel7.img
[4.9709 (+0.000028)] File size = 15155200 bytes
[4.9714 (+0.000422)] Received message ReadFile: kernel7.img
[4.9714 (+0.000019)] File read: kernel7.img
[18.1245 (+13.153133)] libusb_bulk_transfer sent 15155200 bytes; returned 0
[18.1257 (+0.001158)] Received message GetFileSize: bcm2710-rpi-cm3.dtb
[18.1337 (+0.007998)] File size = 16517 bytes
[18.1342 (+0.000538)] Received message ReadFile: bcm2710-rpi-cm3.dtb
[18.1343 (+0.000040)] File read: bcm2710-rpi-cm3.dtb
[18.1485 (+0.014227)] libusb_bulk_transfer sent 16517 bytes; returned 0
[18.2482 (+0.099709)] Received message GetFileSize: config.txt
[18.2483 (+0.000084)] File size = 104 bytes
[18.2489 (+0.000603)] Received message ReadFile: config.txt
[18.2489 (+0.000042)] File read: config.txt
[18.2492 (+0.000271)] libusb_bulk_transfer sent 104 bytes; returned 0
[18.2497 (+0.000492)] Received message GetFileSize: overlays/dwc2.dtbo
[18.2580 (+0.008282)] File size = 852 bytes
[18.2584 (+0.000490)] Received message ReadFile: overlays/dwc2.dtbo
[18.2585 (+0.000027)] File read: overlays/dwc2.dtbo
[18.2593 (+0.000828)] libusb_bulk_transfer sent 852 bytes; returned 0
[19.4022 (+1.142849)] Received message Done: overlays/dwc2.dtbo
[19.4022 (+0.000048)] Second stage boot server done

@lurch what unit are the timestamps from that $ sudo ~/github/raspberrypi/usbboot/rpiboot -d usbboot -v in?

@jhermsmeier The first number is seconds, and the second number is the 'delta' since the last time-stamp got printed. Here's my diff - i warned you it was crude :wink: https://gist.github.com/lurch/b7006507cc5885ebf9b8b1b1022bf356
(it also includes the patch from https://github.com/raspberrypi/usbboot/issues/14#issuecomment-291088829 which I needed for some other tests I was doing)

This has been superseded by https://github.com/resin-io/etcher/pull/1803


inconsistent resource naming - singular v plural

There's a bit of inconsistency in if the resource name is singular onelogin_role or plural onelogin_roles.
The actual resource names appear to be the plural form. That is, in TF code we use onelogin_roles. However, the TOC on the left side refers to the resource in the singular, as do references in the test cases, ie:
base := GetFixture("onelogin_role_example.tf", t)
update := GetFixture("onelogin_role_updated_example.tf", t)

Glancing through the code, this applies to other OL resource types like oidc_apps as well.
Most likely someone started writing it one way and changed their mind later. I do that more than I care to admit. The singular resource form follows the convention of a (quick and non-scientific) sample of other providers' resources. IMHO, in most cases the singular form makes a bit more sense and reads clearer. In a given TF resource block, we're most often managing a single object, rather than many at once.
There are two different data sources, one singular data_source_onelogin_user and one plural data_source_onelogin_users. This makes complete sense - they're doing different things and returning different data types.

Totally with you. I find myself similarly lacking discipline - whether it's singular/plural or - / _
AFAIK there's no hard and fast rule, but it looks like the general Terraform convention is singular for the name of the resource. This can come in a later set of changes, and might even have a little while where using the plural generates a deprecation warning, but both styles work.


[ Feature request] : addon of jule program for reverse the string

added 2 files of program based on jule programming language:

StringReverse.jule : contains the main logic for reversing the string
Stringreversetest.jule: contains necessary test cases for testing this code in jule

@mertcandav please review this

@mertcandav I have done changes which you requested. Please review the program files of test & main logic and give your reveiw for futrue changes, Thank you!


Update workflows files and karma

Updated workflow files to use saucepans.
Switched to run on Github actions on ubuntu instead of macOS. Faster execution time.
Updated Karma unit tests runner with sauce launcher.
Removed Allure reporter
Removed puppeteer
Saucelabs network logger enable
Remove quarantine from the npm scripts

Related Issue

Motivation and Context

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Improvement (non-breaking change which does not add functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA or I'm an Adobe employee.
[ ] I have made any necessary test changes and all tests pass.
[ ] I have run the Sandbox successfully.

Lezgoooooooooo!


Refactor to align with updated style guide

https://github.com/softlayer/ember-style-guide#defining-functions-to-be-called-when-events-are-triggered

willClearRender() - https://github.com/softlayer/sl-ember-components/blob/v0.11.0/addon/components/sl-date-picker.js#L267

@notmessenger please assign to me.


Benchmark suite speedup

Fixes https://github.com/javaslang/javaslang/issues/1413 by speeding up the benchmarks.

removed all Functional Java and PCollections benchmarks since they were usually slower by an order of magnitude
cached collection creation for the benchmarks
unified memory consumption display and applied to to every benchmark
added explanations for cases that were often misunderstood

The quick benchmark tests take about 90 seconds now.
As usual, I recommend a commit-by-commit review.

[Current coverage][cc-pull] is 97.25%

Merging [#1414][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master      #1414   diff @@
==========================================
  Files            86         86
  Lines         10307      10307
  Methods           0          0
  Messages          0          0
  Branches       1823       1823
==========================================
  Hits          10024      10024
  Misses          156        156
  Partials        127        127

Powered by Codecov. Last updated by [fc06280...ad8b81c][cc-compare]
[cc-base-branch]: https://codecov.io/gh/javaslang/javaslang/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/javaslang/javaslang/compare/fc06280b8f25c7d8acab5e4830ef48aa36137160...ad8b81c6982971b4f15dbb7d455ad218c08d3587
[cc-pull]: https://codecov.io/gh/javaslang/javaslang/pull/1414?src=pr

Hi Lorinc, thank you for the PR.
We still need the benchmarks for Functional Java and PCollections. They are important to Javaslang, maybe more important than the benchmarks for Scala and Clojure. We need all these benchmarks to proof that Javaslang is the best solution available in Java.
Please do not add logic to benchmarks like caching. The less code, the better. There should be no additional logic in benchmarking code (or in test code). Simplicity is more important than speed here. One minute more or less does really not matter.

Please take the following serious - take a walk, breath fresh air and widen your sight again. The benchmarks are already awesome, also the naming is great. These benchmarks are now ready to be taken to the next level... an article!

Please take the following serious - take a walk, breath fresh air and widen your sight again. The benchmarks are already awesome, also the naming is great. These benchmarks are now ready to be taken to the next level... an article!

Not sure how to interpret this exactly, but will definitely think about an article (some guidelines would help, i.e. what would people find interesting?), after the Vector rewrite is finished :)

Not sure how to interpret this exactly

It is a Buddhist wisdom. We tend to focus on spots and forget that the world contains infinite(!) much interesting things to explore. I often remind myself to leave a spot, widen my senses and let all the things enter my mind.
I think the benchmarks are pretty cool now. We have a model for our benchmarks (inner classes), measure mem and cpu, are able to pretty-print it, adjusted the configuration, measure the major libraries, etc.

after the Vector rewrite is finished :)

💃

Great, many thanks for all the effort!


rootRoute._addFileChildren is not a function

Hi author, thank you very much for the framework!
However, I have the problem in the picture after running the project according to the guide.

Hello,
I am not able to reproduce this error after following the steps in the README. Can you provide additional information/context?
If you delete routeTree.gen.ts and allow it to regenerate do you receive the same error?

Thank you.
Yes, I deleted and regenerated this file routeTree.gen.ts, but the problem still exists
mac os 12.6
nodejs v18.19.0
pnpm 8.6.10

this exists when creating a route while still developing I was able to reproduce this error by generating a route called about then deleting it, then navigating to the route

I'm still not able to replicate this issue. If it is a problem with @vitejs/plugin-react-swc feel free to remove the package and replace it with @vitejs/plugin-react. After you've made the replacement you will have to update vite.config.ts. Replace import react from "@vitejs/plugin-react-swc"; with import react from "@vitejs/plugin-react";
As a reference, this is what I see on my end when I delete and add/readd routes and navigate to them/refresh the page

Thanks for the reply, it might be a problem with my environment configuration


How would you configure permission?

As far as I know, permissions on Access Policy don't work. I tried setting only "Read" permission on a folder but anyone could delete it. Azure File Sync connects to File Share. So I assume it inherits permissions from the storage account? I'm struggling to find an answer on this one, please help.
Thanks in advance

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1aa8c1f7-dc55-7129-95be-687a0b11a636
Version Independent ID: 4a09b58a-9fd2-69fc-0348-e6d4d0956a20
Content: Planning for an Azure File Sync deployment
Content Source: articles/storage/files/storage-sync-files-planning.md
Service: storage
Sub-service: files
GitHub Login: @roygara
Microsoft Alias: rogarana

@MoRMongol Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@MoRMongol Thanks for reaching out, in order to better direct/help you would you clarify your situation more?
Are these users deleting a folder in your local environment? Are you trying to establish an access control method that is local to your environment or inside Azure itself?
Also, when you refer to a folder, are you referring to the file share itself or a folder in the file share?
It sounds like you're trying to establish an access control method, which doesn't work quite like you described. Is this what you're trying to achieve? https://docs.microsoft.com/en-us/azure/storage/files/storage-files-active-directory-enable

@roygara Thanks for your response. Let me clarify it if I can. If you know how "Exavault" works, it'll be very easy to understand. The following scenario is what we're trying to resolve with Azure.
Let's say, I own this 3d design company. We make 3d models for our customers. We create this online shared folder for a certain customer only. Let's say it's a phone case making company called "Smart Case LLC". It must be on a secure place where only "Smart Case LLC" has access to. Of course, "Smart Case LLC" and we are not in the same domain nor network so the environment would have to be solely based on the internet. Thus we're not talking about any kind of Active Directory. "Smart Case LLC" would upload their design sketch to this shared folder and we'd download and see it and make the model and upload it to the same folder and they'd download and use it to make a new phone case.

@MoRMongol Thank you for clarifying, there's actually a few separate ways you can setup an environment that will achieve what you're looking for. They're each very much contextual though, as in it depends on what specific needs you have. Would you email<EMAIL_ADDRESS>for a more direct engagement so that we can work with you to find the one best suited to your particular needs?

@roygara Can you just direct me on one of those separate ways you are talking about? Can it be done via Azure File Share or no? If not, what's one way you would suggest? I've been bouncing too many times between Microsoft representatives.

@MoRMongol As far as I know, none of them are documented. But to answer your question: It can be done using an Azure File Share, there are a variety of configurations utilizing a File share though, and which one makes the most sense to you is highly contextualized. You will be much better off emailing that dlist, it's a much more direct line and our Files product team is on it, so you shouldn't be bounced around. They should work with you to help find a configuration that works best for you.

@roygara Thank you so much for your guidance here. I have already emailed the Files product team directly and am looking forward to their response. I am eager to learn whichever way that works. If, for some reason whether it be high volume of requests or workload that the Files team has, they don't respond, would you be able to help me with it? For example, you can just snip your screen of the steps to make the permission work on Files. Personally, I use that a lot to prepare tutorials and it doesn't take too long. With pictures, like the idiom goes, they can speak 1000 words themselves, right? Again, really appreciate your help.

@MoRMongol Of course, I'm happy to help any way that I can. :)
In this case though, I'm afraid it would take more than a few screenshots. The way I know involves utilizing another tool in combination with your file share. Basically using Azure Storage Explorer to generate a SAS key with limited permissions (no delete, in your case) for your file share and giving that to your customer. Then having them use the SAS key to authenticate to your file share on their own copy of azure storage explorer. This will grant them read/write only access, without delete. Then having them upload and inform you when they've completed the upload so you can manually force a sync (or wait 24 hours for the automated sync). For some obvious reasons this might not be the ideal solution for you, and the solution suggested in the thread might already be better for you.
In any case, I asked a colleague to add me to the email thread just to ensure things continue smoothly for you. Please feel free to engage with us through the email and we'll do our best to help you. I'll be closing this issue out accordingly, since GitHub issues is really meant for documentation support and not product support/engagement.
#please-close


Using Local PV Device, can one device support multiple sts app?

I want to use Local PV Device to support multiple sts app , such as : zookeeper ,kafka, cass .. and so on.
I add a device to my k8s node and success running first app kafka.
when I running my next app, the pvc is pending as notice "no devices found matching the criteria"
so I wonder if one device just support one app? I should add multiple device for my multiple sts app?

The whole device is consumed as a PV for one application. It cannot be used for another application.


Handle recursive bundle package loop when multiple gemspecs present

root_gem_names should contain the names of the gems that the gemspecs in the directory are correlated with. Gems are packaged unless they're called bundler or their names match with the gems specified in the gemspecs.

Handles multiple gemspecs in directory
Handles case where gemspec file name does not match with the gem name specified in the gemspec
Fixes #4430

👍 other than the one comment

Thanks for the catch. Removed the extraneous unless.

A quality spec that checks for focused tests, binding.pry, debugger, and sleep sounds awesome to me. :)

Awesome but separate :P

@homu r+

:pushpin: Commit 762ddfa has been approved by segiddins

:zap: Test exempted - status


Forcing a field to be rendered with default django form in layout

While I was working with layouts in crispy forms I found out there is no way to force a form to be rendered with default django form(you need this when you are using a custom plugin). I know that I can use {{ form.my_field }} to render my field but I'm looking for a solution in form class. I've already asked it in stackoverflow but apparently nobody had a solution. If it's not implemented it would be a handy feature to be added.

I'm going to close this as Out of Scope for the moment. Happy to consider documented, tested pull requests. We may have capacity to reconsider in the future.


LUN 69: Play TTS for alternative solutions

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword LUN.

Please test this. @SteffiStuffel where do we have alternatives?

Just tested this and get errors /unexpected behaviour:
When entering the correct (not alternative) solution, I get an no tts-engine-installed error, although it is installed, but also it is not needed.
When entering a correct alternative solution, the normal audio is played.
E.g. Zollstock has alternative solution Meterstab, it is in the Test-Module (Test -> Level2 -> Test)

Should be fixed. Thanks!

Can you add a release-note as well, please?


bugfix: reverted base image to most recent working version

Description of the change
Related slack threads:

https://spacelift-io.slack.com/archives/C057DSW5S8M/p1726059755606729
https://spacelift-io.slack.com/archives/C034T7M64RE/p1726042160349669

Type of change

[x] Bug fix (non-breaking change that fixes an issue);
[ ] New feature (non-breaking change that adds functionality);
[ ] Breaking change (fix or feature that would cause existing functionality not to work as expected);
[ ] Other (miscellaneous, GitHub workflow changes, changes to the PR template);

Checklists
Development

[ ] Parts of this pull request impacting core (user-facing, documented) product functionality have test coverage;

Code review

[ ] This pull request has a descriptive title and sufficient context for a reviewer. There may be a screenshot or screencast attached;
[x] This pull request is no longer a draft;
[x] You have reviewed this Pull Request yourself;

Already merged. Due to some Github hiccup PR stayed open.


requires_ancestor doesn't work

Input
→ View on sorbet.run
module MyHelper
  extend T::Helpers
  requires_ancestor(Kernel)
  def say_error(message)
    raise "InternalError: #{message}" # error: Method `raise` does not exist on `MyHelper`
  end
end

class MyClass
  include MyHelper

  def do_something(x)
    say_error("some error") unless x
    # ...
  end
end

Observed output

module MyHelper
  extend T::Helpers
  requires_ancestor(Kernel)
  def say_error(message)
    raise "InternalError: #{message}" # error: Method `raise` does not exist on `MyHelper`
  end
end

class MyClass
  include MyHelper

  def do_something(x)
    say_error("some error") unless x
    # ...
  end
end
editor.rb:5: Method raise does not exist on MyHelper https://srb.help/7003
     5 |    raise "InternalError: #{message}" # error: Method `raise` does not exist on `MyHelper`
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  Note:
    Did you mean to include Kernel in this module?
  Did you mean:
    https://github.com/sorbet/sorbet/tree/master/rbi/core/kernel.rbi#L2764: Kernel#raise
    2764 |  def raise(arg0=T.unsafe(nil), arg1=T.unsafe(nil), arg2=T.unsafe(nil)); end
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Errors: 1

Expected behavior
This example is listed in the docs but it does not work.

Nor can I get other requires_ancestor uses to work in my code, despite the fact that the function is defined and this is listed as a working (if experimental) feature in the docs. Do I have to somehow enable it in the config? If so, the require_ancestors page should explain this.

Do I have to somehow enable it in the config?

You are correct here - the feature can be enabled by adding --enable-experimental-requires-ancestor to your sorbet/config file

I see-- this should really be noted at the top of the docs page for this feature!

Good call, I pushed a fix here: https://github.com/sorbet/sorbet/pull/4177 👍


[C++][Python] Clarify meaning of "row_group_size" and change default to something more reasonable

Describe the enhancement requested
The row_group_size property in pyarrow.parquet.write_table is described as:

Maximum size of each written row group. If None, the row group size will be the minimum of the Table size and 64 * 1024 * 1024.

This limit is in # of rows but that is not obvious from the description.  Furthermore, 64Mi is an extremely high limit for row group size.  I believe it is perhaps based on the Java implementation, however the Java implementation treats this number as "bytes" and not "rows" (64MiB row groups is very reasonable).
Perhaps the best solution would be to add support for a limit in terms of bytes.  In the meantime, I think we should lower the default limit to 1Mi rows.
Component(s)
C++

Hi westonpace, maybe it's not related to your patch. But I found the usage of row_group_size may confusing: https://github.com/apache/arrow/issues/33652
Maybe you can take a look?

It's not related to the patch but it is something we want to be able to support in https://github.com/apache/arrow/issues/21090 .  Thank you for helping me connect these things.


[FontConfig: x86-windows] Category:build failure

Host Environment

OS: Windows/7
Compiler: vs 2017
Vcpkg version: 2021-09-10-2059ef11aa6067e6f59b0d939c5d17e3c5c47d3e

To Reproduce
Steps to reproduce the behavior:
./vcpkg install fontconfig
Failure logs
Starting package 1/3: fontconfig:x86-windows
Building package fontconfig[core]:x86-windows...
-- Downloading https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/2.13.
94/fontconfig-2.13.94.tar.gz -> fontconfig-fontconfig-2.13.94.tar.gz...
[DEBUG] Feature flag 'binarycaching' unset
[DEBUG] Feature flag 'manifests' = off
[DEBUG] Feature flag 'compilertracking' unset
[DEBUG] Feature flag 'registries' unset
[DEBUG] Feature flag 'versions' unset
[DEBUG] Downloading https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/
2.13.94/fontconfig-2.13.94.tar.gz
Error: Failed to download from mirror set:
https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/2.13.94/fontconfig-2
.13.94.tar.gz: WinHttpSendRequest() failed: 12175
Call Stack (most recent call first):
scripts/cmake/vcpkg_download_distfile.cmake:274 (z_vcpkg_download_distfi
w_proxy_and_fail)
scripts/cmake/vcpkg_from_gitlab.cmake:178 (vcpkg_download_distfile)
ports/fontconfig/portfile.cmake:4 (vcpkg_from_gitlab)
scripts/ports.cmake:140 (include)
Error: Building package fontconfig:x86-windows failed with: BUILD_FAILED
Additional context
https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/ does not exist. Rather https://gitlab.freedesktop.org/fontconfig/fontconfig/-/tags/   exists
But cmake cannot perform the download.

Is this issue still a problem for you? @kossiLeBeau


Fix motion 'default change reco mode' setting

Closes #3105

That's because, until a change recommendation is actually made, the "changed version" is the same as the original version. Also changing the code so that changed mode, if it is set as default, is triggered under all circumstances, even those that don't include a recommendation, would, with the current way that mode is implemented, cause the view to break a bit (i.e. no possibility to create change recommendations and no way to switch modes).
Similar reasoning for the final version. That one needs at least one of "change recommendations" or "accepted amendments" to be present for the motion. Else it doesn't work.
If the requirements for the views are there, they will be displayed in the correct format however.
Does this really need fixing (and if yes: to what extend?), or is this alright as is?

ping @MSoeb


How to modify $message in my own theme?

I create my own theme (test site here) and want to remove message of success link creating. I don't want to hack core.
In my theme file, like in examples in sample-theme-adv, I write:
// Replace message
sample_theme_replace_in_array( $elements, 'yourls_add_new_link', 'seventh_theme_add_new_link' );

And copy function yourls_add_new_link to my theme file from functions.php:184.
I already succefully do it with another functions, for example:
// Replace head
sample_theme_replace_in_array( $elements, 'yourls_html_head', 'seventh_theme_head' );

and it work. But same things don't work with function yourls_add_new_link. Maybe there is another methods to remove message "%s added to database" (and h2 tags) without modifing function.php? I want to remove a success message, but leave the error messages.

Solved - I modified sample-public-front-page.txt:58 to
// Display result message of short link creation
if( isset( $message ) && (strpos($message, "added to database") === false) ) {
   yourls_html_htag( $message, 2 );
}


Rmacfarlane/mark files as viewed

I'm not sure what the purpose of this is so I'm going to close it


Wrong assignment or prolines?

Hi, thanks a lot for the implementation -- this is what many people have been missing, apparently :)
Could you please help me figure out the issue with prolines: as far as I see, they can get assigned both 'H' and 'E' type in your implementation. However, afaik they don't participate in either beta-strand or alpha-helix type of bonds (at least as donors), since they lack H atom on the backbone N.
Am I right that it's better to manually set all prolines to - after pydssp for better correctness?

So sorry for delayed reply. I fixed Proline issue by ignoring N-H donor effect of proline on the h-bond map. Thank you so much for your help to improve the repo!!

This issue was fixed in the current version


[Snyk] Upgrade govuk-frontend from 4.4.1 to 4.5.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade govuk-frontend from 4.4.1 to 4.5.0.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 1 version ahead of your current version.
The recommended version was released 2 months ago, on 2023-01-31.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Closing as duplicate of #407 which can only be merged after we complete EL-795.


STP Engine - Lot of EsRejectedExecutionException  -“queue capacity 1000” on UK during STP execution

INFO  ufferFillerActor [dealsjvdealjvname] - received consume answer from host=<host> status=503 Service Unavailable token=<token>
entity={"success":false,"error":"Failed to execute phase [fetch], [reduce] ; shardFailures {[WkgMCikoRjGN4beT4t-44Q][cm_well_p2_0][0]: RemoteTransportException[[<IP_ADDRESS>][inet[/<IP_ADDRESS>:9302]][indices:data/read/search[phase/fetch/id]]];
nested: EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.transport.netty.MessageChannelHandler$RequestHandler@763fea1b];
}{[E3MMHdgCTCKld17ZU0BFBQ][cm_well_p7_0][1]: RemoteTransportException[[<IP_ADDRESS>][inet[/<IP_ADDRESS>:9304]][indices:data/read/search[phase/fetch/id]]]; nested:
EsRejectedExecutionException[rejected execution (queue capacity 1000) on org.elasticsearch.transport.netty.MessageChannelHandler$RequestHandler@76947a68]; }{[E3MMHdgCTCKld17ZU0BFBQ][cm_well_p8_0][4]:

Issue seems to be environmental with consume API on the source Cm-well instance


Update carrierwave dependency

Support carrierwave v2.1.

Coverage remained the same at 100.0% when pulling 6a14110b5cb32889c933da64a0cfb976cdaabdb4 on oreshinya:update_carrierwave_dependency into da8e8439bc1dff77f34f8a86857931f00e8f3d8f on jtescher:master.

Coverage remained the same at 100.0% when pulling 6a14110b5cb32889c933da64a0cfb976cdaabdb4 on oreshinya:update_carrierwave_dependency into da8e8439bc1dff77f34f8a86857931f00e8f3d8f on jtescher:master.

Thanks!