PUB-52: Remove grpc

Remove PUBSUB_USE_GRPC options and dependency

We might want to log an error in this case stating

PUBSUB_USE_GRPC=true has been deprecated use v1.x to use GRPC
Rest LGTM

We might want to log an error in this case stating

PUBSUB_USE_GRPC=true has been deprecated use v1.x to use GRPC

I don't think that's needed if we are doing a breaking release (V2)


[BUG]: Error while removing from bench

Hello @kid1194,
I'm getting the below error while removing the app.
$ bench remove-app frappe_list_unassign_from
Checking if app installed on active sites...
$ /home/frappe/frappe-bench/env/bin/python -m pip uninstall -y frappe_list_unassign_from
Found existing installation: frappe-list-unassign-from 1.0.7
Uninstalling frappe-list-unassign-from-1.0.7:
  Successfully uninstalled frappe-list-unassign-from-1.0.7
ERROR: [Errno 2] No such file or directory: 'apps/frappe-list-unassign-from'
Traceback (most recent call last):
  File "/usr/lib/python3.10/shutil.py", line 815, in move
    os.rename(src, real_dst)
FileNotFoundError: [Errno 2] No such file or directory: 'apps/frappe-list-unassign-from' -> 'archived/apps/frappe-list-unassign-from-2023-08-01'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/bench", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.10/dist-packages/bench/cli.py", line 127, in cli
    bench_command()
  File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/bench/commands/make.py", line 197, in remove_app
    bench.uninstall(app_name, no_backup=no_backup, force=force)
  File "/usr/local/lib/python3.10/dist-packages/bench/bench.py", line 130, in uninstall
    self.apps.remove(App(app, bench=self, to_clone=False), no_backup=no_backup)
  File "/usr/local/lib/python3.10/dist-packages/bench/bench.py", line 317, in remove
    app.remove(no_backup=no_backup)
  File "/usr/local/lib/python3.10/dist-packages/bench/utils/render.py", line 126, in wrapper_fn
    return fn(*args, **kwargs)
  File "/usr/local/lib/python3.10/dist-packages/bench/app.py", line 216, in remove
    shutil.move(active_app_path, archived_app_path)
  File "/usr/lib/python3.10/shutil.py", line 835, in move
    copy_function(src, real_dst)
  File "/usr/lib/python3.10/shutil.py", line 434, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.10/shutil.py", line 254, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: 'apps/frappe-list-unassign-from'
INFO: A newer version of bench is available: 5.16.2 → 5.16.4

@crazy-explore-r I apologize for such problem..
This error is happening because the repo name doesn't match the plugin name and when bench installed the plugin it created the plugin folder using the repo name. The plugin name has underscores while the repo name has dashes..
I'm sorry, I don't know how to force bench to use the plugin name instead of repo..
Best regards..

Noted @kid1194, Thanks


ci: add unit tests workflow

Fixes CPR-1273
Add unit tests execution in CI with each PR and merge to the trunk.
Supported targets:

Macos x86_64
Macos ARM64
Linux x86_64
Windows Mingw64

KNOWN RESTRICTION - not supported target: Linux ARM64 due to lack of the vyper executable built for Linux ARM64.

Results are reported as PR checks, e.g.:

As well as PR auto-updated comments:

For now, 8 unit tests exist and all pass on all available platforms.

Why ❔
In order to keep the trunk always stable, introduce unit tests quality gates on the PR level as well as make sure that unit tests in the main branch are always working after the merge.

Checklist

[x] PR title corresponds to the body of PR.
[x] Tests for the changes have been added / updated.
[x] Documentation comments have been added / updated.
[x] Code has been formatted via cargo fmt and checked with cargo clippy.

Are the “Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20<EMAIL_ADDRESS>warnings cause for concern?  E.g. https://github.com/matter-labs/era-compiler-vyper/actions/runs/7654840057

Are the “Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20<EMAIL_ADDRESS>warnings cause for concern?
Maybe not in this patch, but worth updating as well.

Also annoyed by the masses of warnings for third-party crates, e.g.

warning: missing documentation for the crate
--> /Users/hetzner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.78/build.rs:37:1
|
37  | / use std::env;
38  | | use std::ffi::OsString;
39  | | use std::path::Path;
40  | | use std::process::{self, Command, Stdio};
...   |
201 | |     })
202 | | }
| |_^
|
= note: requested on the command line with -W missing-docs

https://github.com/matter-labs/era-compiler-vyper/actions/runs/7653852412/job/20856599305#step:7:59.  Could we turn off warnings we don’t care about (e.g. -W missing-docs above) in code we don’t control?

Are the “Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20<EMAIL_ADDRESS>warnings cause for concern? E.g. https://github.com/matter-labs/era-compiler-vyper/actions/runs/7654840057

Nice that you marked that.
I've created CPR-1515 to address this issue.

Also annoyed by the masses of warnings for third-party crates, e.g.

warning: missing documentation for the crate
--> /Users/hetzner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.78/build.rs:37:1
|
37  | / use std::env;
38  | | use std::ffi::OsString;
39  | | use std::path::Path;
40  | | use std::process::{self, Command, Stdio};
...   |
201 | |     })
202 | | }
| |_^
|
= note: requested on the command line with -W missing-docs

https://github.com/matter-labs/era-compiler-vyper/actions/runs/7653852412/job/20856599305#step:7:59. Could we turn off warnings we don’t care about (e.g. -W missing-docs above) in code we don’t control?

@FlashSheridan , I'll take a look at this too.
I've created CPR-1516 for that.

@antonbaliasnikov please copy the requested changes to zksolc CI as well.


Living in the Buffer Zone?

We write about “buffer-zone villages such as Yen Son village” so it seems people are already living in the buffer zone!?
In this case, a Decision about how to use the buffer zone seems not necessary.
We need a map and more clarification.. #3

According to one author "The buffer zone is the villages or communes around the protected area. In Vietnam, the buffer zone may not be indicated in any map. It may be indicated in planning map with the type of land use land cover focus on agriculture and forest plantation"


Runtime error: size mismatch for linear1.weight: copying a param with shape

I have a dataset that runs fine for about an hour of steady processing with apparent improvement before giving this error. See the attached output log. It seems to have something to do with the dimension changing, despite there being no issues with the dimensions in the dataset.
Console output: error.txt

I have reduced the variable count for subsequent test runs and still encounter exactly the same error (size mismatch for linear.weight ... ) with the network variable size eventually hitting a mismatch. In these cases the cases failed after almost 12 hours of computation.

Hello,
I'm having the same issue. The developers haven't responded in two weeks, perhaps it is time we bring this issue to our own hands. Meanwhile we wait for this bug to be fixed, we could try to fix this issue on our own, I can make an email thread where we can discuss AI-Feynman and accelerate the time in which this issue can be fixed. You can email me at<EMAIL_ADDRESS>or you may also send your email so I can start the discussion thread of 4 people  with this same issue. Thanks.
-Rodrigo

@RodrigoSandon I sent you an email.

Hey guys I'm getting this same error here:
Checking polyfit

Complexity  RMSE  Expression
[0.0, 28.98901941844433, 'asin(0)']
Checking for symmetry
 Dataset with clusters n.txt_train-translated_plus
Found pretrained NN

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-6-7c9e9ea3efd3> in <module>()
      1 from S_run_aifeynman import run_aifeynman
      2 # Run example 1 as the regression dataset
----> 3 run_aifeynman("/content/AI-Feynman/example_data/",'Dataset with clusters n.txt',30,"14ops.txt", polyfit_deg=3, NN_epochs=400)

4 frames
/content/AI-Feynman/Code/S_run_aifeynman.py in run_aifeynman(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, vars_name, test_percentage)
    163     PA = ParetoSet()
    164     # Run the code on the train data
--> 165     PA = run_AI_all(pathdir,filename+"_train",BF_try_time,BF_ops_file_type, polyfit_deg, NN_epochs, PA=PA)
    166     PA_list = PA.get_pareto_points()
    167

/content/AI-Feynman/Code/S_run_aifeynman.py in run_AI_all(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, PA)
     89         new_pathdir, new_filename = do_translational_symmetry_plus(pathdir,filename,symmetry_plus_result[1],symmetry_plus_result[2])
     90         PA1_ = ParetoSet()
---> 91         PA1 = run_AI_all(new_pathdir,new_filename,BF_try_time,BF_ops_file_type, polyfit_deg, NN_epochs, PA1_)
     92         PA = add_sym_on_pareto(pathdir,filename,PA1,symmetry_plus_result[1],symmetry_plus_result[2],PA,"+")
     93         return PA

/content/AI-Feynman/Code/S_run_aifeynman.py in run_AI_all(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, PA)
     61     elif path.exists("results/NN_trained_models/models/" + filename + "_pretrained.h5"):
     62         print("Found pretrained NN \n")
---> 63         NN_train(pathdir,filename,NN_epochs/2,lrs=1e-3,N_red_lr=3,pretrained_path="results/NN_trained_models/models/" + filename + "_pretrained.h5")
     64         print("NN loss after training: ", NN_eval(pathdir,filename), "\n")
     65     else:

/content/AI-Feynman/Code/S_NN_train.py in NN_train(pathdir, filename, epochs, lrs, N_red_lr, pretrained_path)
    114
    115         if pretrained_path!="":
--> 116             model_feynman.load_state_dict(torch.load(pretrained_path))
    117
    118         check_es_loss = 10000

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in load_state_dict(self, state_dict, strict)
   1050         if len(error_msgs) > 0:
   1051             raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
-> 1052                                self.__class__.__name__, "\n\t".join(error_msgs)))
   1053         return _IncompatibleKeys(missing_keys, unexpected_keys)
   1054

RuntimeError: Error(s) in loading state_dict for SimpleNet:
	size mismatch for linear1.weight: copying a param with shape torch.Size([128, 10]) from checkpoint, the shape in current model is torch.Size([128, 9]).

Were you able to solve this?
I'm not loading from a pre-trained model, this just happens after running this notebook on my own data (after substituting 'example1.txt' with my own data:
https://github.com/dcshapiro/AI-Feynman/blob/master/AI_Feynman_2_0.ipynb

Hey guys I'm getting this same error here:
Checking polyfit

Complexity  RMSE  Expression
[0.0, 28.98901941844433, 'asin(0)']
Checking for symmetry
 Dataset with clusters n.txt_train-translated_plus
Found pretrained NN

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-6-7c9e9ea3efd3> in <module>()
      1 from S_run_aifeynman import run_aifeynman
      2 # Run example 1 as the regression dataset
----> 3 run_aifeynman("/content/AI-Feynman/example_data/",'Dataset with clusters n.txt',30,"14ops.txt", polyfit_deg=3, NN_epochs=400)

4 frames
/content/AI-Feynman/Code/S_run_aifeynman.py in run_aifeynman(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, vars_name, test_percentage)
    163     PA = ParetoSet()
    164     # Run the code on the train data
--> 165     PA = run_AI_all(pathdir,filename+"_train",BF_try_time,BF_ops_file_type, polyfit_deg, NN_epochs, PA=PA)
    166     PA_list = PA.get_pareto_points()
    167

/content/AI-Feynman/Code/S_run_aifeynman.py in run_AI_all(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, PA)
     89         new_pathdir, new_filename = do_translational_symmetry_plus(pathdir,filename,symmetry_plus_result[1],symmetry_plus_result[2])
     90         PA1_ = ParetoSet()
---> 91         PA1 = run_AI_all(new_pathdir,new_filename,BF_try_time,BF_ops_file_type, polyfit_deg, NN_epochs, PA1_)
     92         PA = add_sym_on_pareto(pathdir,filename,PA1,symmetry_plus_result[1],symmetry_plus_result[2],PA,"+")
     93         return PA

/content/AI-Feynman/Code/S_run_aifeynman.py in run_AI_all(pathdir, filename, BF_try_time, BF_ops_file_type, polyfit_deg, NN_epochs, PA)
     61     elif path.exists("results/NN_trained_models/models/" + filename + "_pretrained.h5"):
     62         print("Found pretrained NN \n")
---> 63         NN_train(pathdir,filename,NN_epochs/2,lrs=1e-3,N_red_lr=3,pretrained_path="results/NN_trained_models/models/" + filename + "_pretrained.h5")
     64         print("NN loss after training: ", NN_eval(pathdir,filename), "\n")
     65     else:

/content/AI-Feynman/Code/S_NN_train.py in NN_train(pathdir, filename, epochs, lrs, N_red_lr, pretrained_path)
    114
    115         if pretrained_path!="":
--> 116             model_feynman.load_state_dict(torch.load(pretrained_path))
    117
    118         check_es_loss = 10000

/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py in load_state_dict(self, state_dict, strict)
   1050         if len(error_msgs) > 0:
   1051             raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
-> 1052                                self.__class__.__name__, "\n\t".join(error_msgs)))
   1053         return _IncompatibleKeys(missing_keys, unexpected_keys)
   1054

RuntimeError: Error(s) in loading state_dict for SimpleNet:
	size mismatch for linear1.weight: copying a param with shape torch.Size([128, 10]) from checkpoint, the shape in current model is torch.Size([128, 9]).

Were you able to solve this?
I'm not loading from a pre-trained model, this just happens after running this notebook on my own data (after substituting 'example1.txt' with my own data:
https://github.com/dcshapiro/AI-Feynman/blob/master/AI_Feynman_2_0.ipynb

I just encountered this error too. Looks like it's been a while since it's remained unaddressed. Have you guys made any progress? Thanks.

There appears to be an issue where the new training data file generated in S_symmetry.py has one fewer variable then
the saved model which gets loaded in S_NN_train.py when 'pretrained_path' code is executed.
Synopsis :
i. if pretrained_path!="": in S_NN_train.py the exception is generated loading the state_dict and running model.eval()
ii.  remove_input_neuron(model,n_variables,j,ct_median,"results/NN_trained_models/models/"+filename + "-translated_plus_pretrained.h5") in S_symmetry.py saves the state_dict and model with the original number of factors.
iii. S_NN_train.py loads n_variables with the reduced number of factors.
iv.    elif path.exists("results/NN_trained_models/models/" + filename + "_pretrained.h5"): in S_run_aifeynman.py loads the pretrained model with the original number of factors.
If you comment out this line in S_run_aifeynman.py, you can circumvent the exception.
   elif path.exists("results/NN_trained_models/models/" + filename + "_pretrained.h5"):

When S_symmetry invokes 'remove_input_neuron(), the model has 'n' factors, however, the new 'data_translated' file saved in S_symmetry.py has 'n-1' factors.  The discrepancy between the number of factors in the .h5 file and the data_translated file causes the exception in S_NN_train, when 'if_pretrained_path' code is executed.


Remove and replace all instances of eval()

Although this isn't a bug per-se it felt like this was still the right area.
https://github.com/space10-community/conversational-form/search?l=JavaScript&q=eval(
There are a couple instances where the eval() function is used and this is usually discouraged for security reasons. Perhaps a different solution should be used?

@matt3224 thank you for pointing this out. We are indeed using this for executing custom validation functions for input elements and we do note this in our documentation. That said we should always strive to do better so I'll take a look and see if I should possibly change it to something like window[functionNameString] instead.

That's great to hear! Keep me posted


Undocking the 'script' tab to its own window causes collision shape resizers to disappear

Godot version
v4.1.1.stable
System information
Godot v4.1.1.stable - Windows 10.0.22621 - Vulkan (Mobile) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; <IP_ADDRESS>42) - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)
Issue description
When working with collision shapes, the orange resizer dots help to adjust them graphically without having to change values in the inspector. When the script tab is undocked from the editor, the resizer dots vanish. Upon re-docking the script window to the editor, they come back.
Steps to reproduce
The Bug
1.) Create a new blank project, and begin with 'Node3D.'
2.) Add a 'StaticBody3D' as a child of the 'Node3D.'
3.) Add a 'CollisionShape3D' as a child of the 'StaticBody3D' and set it to 'new BoxShape3D.'
4.) Add a 'MeshInstance3D' as a child of the 'CollisionShape3D' set it to 'new BoxMesh.'
5.) In the node hierarchy, select the CollisionShape3D node. Note how the orange resizer dots appear in the viewport to help you adjust the collision shape graphically.
6.) Click on the 'Script' tab at the top of the editor.
7.) In the top right of the script tab, click the button that makes the script editor floating.
8.) Now that the script editor is floating, click on the '3D' tab at the top of the editor. The orange dots will likely still be visible, but may not be.
9.) In the node hierarchy, either click below all the nodes, or click another node, to deselect the collision shape.
10.) Click on the CollisionShape3D, and note how the orange resizer dots no longer appear.
To Undo the Bug
1.) Navigate back to the floating script editor window and close it, which will dock it to the editor.
2.) In the node hierarchy, deselect the CollisionShape3D either by clicking below all the nodes, or clicking another node.
3.) Click on the CollisionShape3D, and note how the orange resizer dots appear again.
Minimal reproduction project
N/A
Image of the CollisionShape3D with the script tab docked

Image of the CollisionShape3D with the script tab floating

It looks like this is a duplicate of #80588, which should be fixed in 4.2 (#80647).

It looks like this is a duplicate of #80588, which should be fixed in 4.2 (#80647).

Oops! Thanks for letting me know, I did search through the open issues but didn't find those. Should I close this issue?

If you're happy that it is fixed in 4.2 (I did test it on master but feel free to test it yourself - it was merged in dev snapshot 5), then it's probably worth closing :+1:


Add unit tests for sql plugin registration

What changed?
Add unit tests for sql plugin registration

Why?
Improve test coverage

How did you test it?
unit test

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 018e0a8b-1a9b-4eda-815d-5a18215d7aea
Details

0 of 0   changed or added relevant lines in 0 files are covered.
113 unchanged lines in 17 files lost coverage.
Overall coverage decreased (-0.009%) to 62.917%

Files with Coverage Reduction
New Missed Lines
%

common/task/weighted_round_robin_task_scheduler.go
1
88.06%

common/peerprovider/ringpopprovider/config.go
2
81.58%

common/persistence/historyManager.go
2
66.67%

service/frontend/api/handler.go
2
62.05%

service/history/execution/mutable_state_util.go
2
37.63%

common/persistence/nosql/nosqlplugin/cassandra/workflow.go
3
61.93%

common/persistence/statsComputer.go
3
94.64%

common/archiver/filestore/historyArchiver.go
4
80.95%

common/persistence/nosql/nosqlplugin/cassandra/tasks.go
4
76.09%

service/history/task/transfer_standby_task_executor.go
4
87.01%

Totals

Change from base Build 018e093f-1deb-4964-90de-0337cc45040c:
-0.009%

Covered Lines:
92999

Relevant Lines:
147813

💛  - Coveralls


implement dbshell

Initial implementation of MongoDB connection setup method in DatabaseClient class.
Description:
This PR introduces the settings_to_cmd_args_env method in the DatabaseClient class.
Limitations:

how do we handle options like awsIamSessionToken.
Currently, password hiding under environment variables is not supported.

Feedback and contributions are welcomed to address these limitations and refine the implementation.

[x] Where do I have to put the unit test, I already wrote it, but I don't know where those have to be.. will they be merged into Django test?  solved. PR open
[ ] Hide password if an exception is raised.

Please try to push a single squashed commit to this PR. It may be easiest to start a new branch rather than rebase this out.

Ok, I will close this PR. Open a new one from the mongoforks. I think is almost done.


Do not prepopulate the experiment selector when click "compare" on a run

Currently, Experiment Selector pre-populates when clicking "compare" on a run, even though the experiment to use is already specified in the query. The behavior should be modified to prevent pre-population.

https://github.com/G-Research/fasttrackml-ui-aim/pull/70 fixes that since when we compare two runs from the runs tab the experiment selector is already populated to show those runs


Remove win32-ia32 from GitHub Actions

@joaomoreno I believe you missed this in https://github.com/microsoft/vscode-platform-specific-sample/pull/10.

Thanks @felipecrs!


(PUP-6244) Fix skipped PMT upgrade acceptance tests

This commit updates the following PMT upgrade acceptance tests:
* tests/modules/upgrade/that_was_installed_twice.rb
* tests/modules/upgrade/with_scattered_dependencies.rb

Prior to this commit these tests were being skipped because they
were setting the modulepath via the puppet.conf file. This
method of managing modulepath has been deprecated. This commit
updates the tests to use directory based environments to install
the modules.

CLA signed by all contributors.

Hey @johnduarte! Just found this in the list of puppet maintenance tickets. I can work on bringing this through, but it needs a rebase. I can wait for you to do that and test / merge when ready, or do it myself if you've got other things going on.

Thanks @whopper . I will dust this off,  rebase, and ping you when it has been cleaned up.

👍 passed in both centos 7 and windows 2012r2. Will merge once appveyor goes green.

Appveyor looks to be hanging forever and doesn't matter anyway since this is an acceptance change. Merging as is.


After dns challenge, dns record stops working

1. What version of Caddy are you using (caddy -version)?
Caddy 0.10.11 (non-commercial use only)
2. What are you trying to do?
Automatic SSL certificates with namecheap dns challenge.
3. What is your entire Caddyfile?
import conf.d/*

conf.d/chat
chat.cwrcoding.com {
    proxy / localhost:1519 {
        transparent
        websocket
    }

    import ../ssl.conf
}

ssl.conf
tls<EMAIL_ADDRESS>{
    protocols tls1.2
    key_type p384
    dns namecheap
    must_staple
}

tls<EMAIL_ADDRESS>{
    protocols tls1.2
    key_type rsa4096
    dns namecheap
    must_staple
}

header / Strict-Transport-Security 'max-age=63072000; includeSubDomains;      preload'

4.  Please paste any relevant HTTP request(s) here.
6. What did you expect to see?
Certificate request and then a working site
7. What did you see instead (give full error messages and/or log)?
The certificate got requested correctly, but after that the dns record for the website (chat.cwrcoding.com) stops working. I verified it with nslookup chat.cwrcoding.com dns1.registrar-servers.com
This happened before with rancher.cwrcoding.com, which I then resetted via namecheap support.
8. How can someone who is starting from scratch reproduce the bug as minimally as possible?
Minimal Caddyfile like 'conf.d/chat' merged with 'ssl.conf', used together with namecheap API credentials
I'm willing to do any tests with namecheap API, if it helps.
My dns records are wildcard records. After the challenge every subdomain works, except the one used for the challenge.

Hmm, this looks like a bug in the integration for namecheap's API. Could you post this issue instead at https://github.com/xenolf/lego and maybe tag the contributor of the namecheap package there? That will ensure the best people can work on a fix for it. Thanks!


[BUG] tailwindcss doesn't work in content script UI

What happened?
I use antd and tailwindcss, this is my content script UI

export const config: PlasmoCSConfig = {
  matches: ["https://www.youtube.com/*"]
}

export const getInlineAnchor: PlasmoGetInlineAnchor = async () =>
  document.querySelector("#player")

const HOST_ID = "engage-csui"

export const getShadowHostId: PlasmoGetShadowHostId = () => HOST_ID
export const getStyle = () => {
  const style = document.createElement("style")
  style.textContent = antdResetCssText
  return style
}

export const mountShadowHost: PlasmoMountShadowHost = ({
  shadowHost,
  anchor,
  mountState
}) => {
  anchor.element.appendChild(shadowHost)
  mountState.observer.disconnect() // OPTIONAL DEMO: stop the observer as needed
}

export default function Toolbar() {
  return (
    <StyleProvider container={document.getElementById(HOST_ID).shadowRoot}>
      {
        showDownloadButton && (
          <Flex gap={'middle'} className={'ml-4'}>
            <Button type={'text'} shape={'circle'} icon={<Video/>} onClick={() => handleDownloadVideo()} loading={videoLoading}/>
            <Button type={'text'} shape={'circle'} icon={<Images size={18}/>} onClick={handleDownloadThumbnail} loading={thumbnailLoading}/>
            <Button type={'text'} shape={'circle'} icon={<Captions/>} onClick={() => handleDownloadSubtitle('text')} loading={subtitleLoading}/>
          </Flex>
        )
      }
    </StyleProvider>
  )
}

I add ml-4 in Flex component, but I didn't see the effect.

Version
Latest
What OS are you seeing the problem on?
No response
What browsers are you seeing the problem on?
No response
Relevant log output
No response
(OPTIONAL) Contribution

[ ] I would like to fix this BUG via a PR

Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I checked the current issues for duplicate problems.

What is your antdResetCssText ?
Does it contains
@tailwind base;
@tailwind components;
@tailwind utilities;

?

What is your antdResetCssText ? Does it contains
@tailwind base;
@tailwind components;
@tailwind utilities;

?

yes, but I removed @tailwind base

Did you set prefix in tailwind.css.js ?

What is your antdResetCssText ? Does it contains
@tailwind base;
@tailwind components;
@tailwind utilities;

?

yes, but I removed @tailwind base

Did you set prefix in tailwind.config.js ?

Did you set prefix in tailwind.css.js ?

What is your antdResetCssText ? Does it contains
@tailwind base;
@tailwind components;
@tailwind utilities;

?

yes, but I removed @tailwind base

Did you set prefix in tailwind.config.js ?

no

Have you had the solution? I met the same issue

no still need @karthest help

Make sure that the location of your content.tsx is included in the content section of your Tailwind configuration. I've encountered a similar issue before, but this solved it.
module.exports = {
  ...
  content: [
    ...
    './contents/**/*.{ts,tsx}',
  ],
  ...

Make sure that the location of your content.tsx is included in the content section of your Tailwind configuration. I've encountered a similar issue before, but this solved it.
module.exports = {
  ...
  content: [
    ...
    './contents/**/*.{ts,tsx}',
  ],
  ...

thanks, I will try it

Make sure that the location of your content.tsx is included in the content section of your Tailwind configuration. I've encountered a similar issue before, but this solved it.
module.exports = {
  ...
  content: [
    ...
    './contents/**/*.{ts,tsx}',
  ],
  ...

thanks, I will try it

Have you solve it. i cannot solve it use this method

Try adding the following code to content.ts if it is not there.
import cssText from "data-text:~style.css"

export const getStyle = () => {
  const style = document.createElement("style")
  style.textContent = cssText
  return style
}


Service monitoring for site, DNS, email

Now that we've got a public site, I'd like it not to go down.
Any suggestions besides Pingdom? I like server density, but it's overkill for what we need today.

R53 is pretty much the same, cheap enough too: http://aws.amazon.com/route53/pricing/#Health_Checks

@k3ypad how much is your commission these days?

 I'd rather spend $5/mo on a DO droplet and use/write an OSS app to do monitoring.

I've been playing with statuscake.com - seems nice.

StatusCake looks nice, that's a solid option.
Other open source options:
https://github.com/hashicorp/consul
https://github.com/fzaninotto/uptime
https://github.com/arachnys/cabot
https://github.com/martinrusev/amonone
https://github.com/eBay/restcommander

I meant to say this is for the minimal external checks to make sure our stuff is in the world. A DNS check and a http://hostname check should be sufficient. Moved to https://github.com/chef-brigade/ops/issues/2
We can build complex monitoring once that's done. Moved to https://github.com/chef-brigade/ops/issues/3


Last list anchors broken on mobile / tablet viewport

To reproduce:

Goto: https://gds-way.cloudapps.digital/#standards
Shrink the viewport down to approx 760px
Try clicking on "storing source code" link
Link not clickable due to following headings negative margin causing an overlap.

Issue caused here
h3, h4, h5, h6 {
    @include heading-offset($gutter);
  }

Proposed fix:

Either remove usage of the mixin in this case and add specific styling manually (less padding, no negative margin)
Continue to use the mixin but add an override after it's usage

Option 1 seems like the cleanest to me with minimal impact.

Thanks for the detailed error report! I've seen something similar before but it's good to see an analysis of the problem, its causes, and ways to fix it. We've added this to our backlog to take a look at it.

No problem @philandstuff. PR for option 1 here if the team are happy with the fix. If not just throw it away :)

Closing issue as it has been duplicated here.


Add local table alias to join statements

This commit fixes the Ambiguous column name Query Exception thrown when joining a class with a common field name.
e.g. Joining Creator in most classes will cause an error, since most classes have the common CreatorID column being used by join statement.

@nbey great improvement!


Check png compression time

The .png compression time is quite long, we'll need to look into what's causing this.

It seems like pngs just take their time to compress. Can't do anything about this and if there's anything that can be done, it must be done upstream.


URL equivalent to SectorPerformance

Hi,
awesome tool, thank you very much for creating and maintaining it!
I was just wondering, what the URL equivalent to SectorPerformance is, as I cannot find it anywhere in the docs (https://www.alphavantage.co/documentation/)
I think it's constructed here (If I'm not mistaken):
https://github.com/RomelTorres/alpha_vantage/blob/a70f110c4883ffe66f2d1f36571a61c2a90e563d/alpha_vantage/sectorperformance.py#L36
But I cannot find SECTOR in the docs, only time series, fundamentals, forex, crypto and technical indicators. Am I missing something?
Thanks!

@BastianZim, happy new year! Since this is more of an API-specific question (rather than a python wrapper specific question), could you please reach out to<EMAIL_ADDRESS>

@BastianZim, happy new year! Since this is more of an API-specific question (rather than a python wrapper specific question), could you please reach out to<EMAIL_ADDRESS>

@AlphaVantageSupport Happy New year! Of course, just wasn’t sure if the wrapper is secretly making multiple calls or if it’s really another endpoint but then I’ll write a separate email.
Thanks!

@AlphaVantageSupport Happy New year! Of course, just wasn’t sure if the wrapper is secretly making multiple calls or if it’s really another endpoint but then I’ll write a separate email.
Thanks!


Can not run on XP.But can bulid.

Thanks for this great project.
But I can't run it. I didn't make any changes.
My environment is VS2010 +.Net4.0 + XP
Compiler success. But open the PDF file, prompt as follows:
"Try to read or write protected memory. This usually indicates that other memory is corrupt."
Who can help me?

You need an older version.  See commit https://github.com/pvginkel/PdfiumViewer/commit/d567bc3cbbd012db7ba294bfa17cffdb82e8a717

Actually the xp compatible dlls are still there. You just need to use them
manually. A while ago pdfium stopped supporting xp and I needed to get a
new version in because some important fixes were made. I copied the old
dlls to
https://github.com/pvginkel/PdfiumViewer/tree/master/Libraries/Pdfium/Windows XP compatible
to keep them available, but they're not in nuget anymore.
On Fri, Apr 15, 2016, 07:36 Ian Yates<EMAIL_ADDRESS>wrote:

You need an older version. See commit d567bc3
https://github.com/pvginkel/PdfiumViewer/commit/d567bc3cbbd012db7ba294bfa17cffdb82e8a717
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/pvginkel/PdfiumViewer/issues/63#issuecomment-210294401

@pvginkel Thanks>Thanks>Thanks>
over and over and over.

You're very welcome.
On Fri, Apr 15, 2016, 09:03 zbooa<EMAIL_ADDRESS>wrote:

@pvginkel https://github.com/pvginkel Thanks>Thanks>Thanks>
over and over and over.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/pvginkel/PdfiumViewer/issues/63#issuecomment-210317970


Khronos Library on Vive Focus 3

Hi. Good news is that I've been able to confirm that the new Khronos library does work on the Vive Focus 3, but only after adding the following line to the android manifest and only with the renderer  set to gl_compatibility.
<category android:name="com.htc.intent.category.VRAPP" />
Without the manifest line, the headset starts the application in 2D and upside down.
I added the line under the current one for Oculus in the template and it works.
I've noticed a few issues with the current XR Tools Demo such as the skybox not rendering in 3D and the gravity demo going mental, but I'll raise those issues under that project.
Great work getting it going though!
Thanks

I still have the problem with upside down. Attached you find my AndroidManifest.xml template and here some lines from the build
    <meta-data
        android:name="org.godotengine.plugin.v1.GodotOpenXRPico"
        android:value="org.godotengine.openxrloaders.pico.GodotOpenXRPico" /> <!-- Enable VR mode on Pico headsets -->

Perhaps you see the error. Unfortunately the Oculus Plugin does not compile for me, as I still get a merge conflict :-)
AndroidManifest.template.xml.txt

Not sure I can help. I only have a Vive Focus 3. For me, since I know Unity works correctly, it was a simple task to unpack a unity apk and diff the manifest for the settings the Vive needs. Since I had similar issues, I'd suspect its just a missing setting. You are selecting the Pico library from the loader?

Perhaps you can post your manifest that I can compare it with yours. I used the Pico loader as the Quest loader did not compile (this problem was solved as I upgraded to the latest Godot beta). You did use the Quest resp Meta loader?
Thanks for the support

I use the generic Khronos loader that was just merged for the Vive. My working manifest is as follows:
File is attached renamed as a .txt since I can't upload .xml. Only change was to add line 70.
AndroidManifest.xml.txt

Indeed, make sure you use the correct loader for each platform. As we're bringing more platforms online there are constant tweaks to the manifest as originally the Godot Core would inject items specifically for the Meta Quest only.
@Psychophylaxis2 great to hear things are working on the HTC Vive Focus 3, that is really cool. I think for now the manifest line needs to be a manual addition but we'll be discussing how we could make this easier for users.

@sprobst76 double check through the logs whether the Vulkan renderer is being used or whether it is falling back to OpenGL. We recently added some hardware checks as there are a lot of Android devices out there that are a little limited on the Vulkan support side and some of these checks may be a little strict, we're still finetuning this.
Anyway, the sky rendering wasn't implemented for stereo on OpenGL (should be fixed, or atleast the work is ready to merge) so that could explain the breakage on Pico.

I don't have an HTC device, it would be nice to get confirmed this worked

So far I can declare success with Godot 4.2.1 with an HTC XR Elite (latest Firmware) in VR mode using the Khronos Vendor plugin. Development machine is ArchLinux. Some pitfalls like Java OpenJDK 17 apply - however this seems an issue with the Android export template. Haven't tried pass-through (VST AR as we call it) as it is labeled Meta Quest only.

We now have HTC Elite XRs to test on thanks to HTC and are slowly working through any remaining issues (though Godot runs decently on these devices so far).
As far as I am aware the rendering issues mentioned were solved some time ago already thanks to HTCs own involvement.
Passthrough will require Godot 4.3 and is now implemented here: https://github.com/GodotVR/godot_openxr_vendors/pull/151
I will close this issue as resolved.


Sweep: Features: Request to show curl command in the response

Details
cURL is ubiquitous tools, so even if I run hurl, I want to be able to share the curl at ease. AFAIK, I can get curl command only when running HurlVerbose.

Closed by #207


GBL model will not display correctly when exported from blender.

I have a project where I need to get this watch into a functioning glb file, however the model becomes all distorted when exported. (Pictures below)
Does anyone have any idea why this might be happening?
The shape is modified with armature/skeleton, However I do have another watch model that works perfectly with a skeleton, so I have trouble understanding why this model won't work.
Any tips/suggestions would help tremendously!

Hello,
Can you please share to .blend file?
We can't see what's wrong without some test cases.
Thanks!

We can't debug without the .blend file.
Closing this ticket.
Don't hesitate to comment if you have some news


⚠ Processors has degraded performance

In e84f690, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 105 ms

Resolved: Processors performance has improved in 02976c9.


no release for 17.1.13

Hi,
How do I generate a build for 17.1.13 ? There is no such release ,please .
tx,
gabor

Hi,
For XAF builds released while a larger version is out unfortunately you have to use the scripts in the root folder. I suggest you

download https://github.com/eXpandFramework/eXpand/releases/tag/<IP_ADDRESS>
Run project converter 17.1.13
Extract sources, modify defines.bat and run buildallcmd.bat

if u have issues feel free to post back here


old application docker image should be deleted before creating a new one

old application docker image should be deleted before creating a new one
since we are already pushing the docker images to docker registry so, we don't need to store them locally
the reason we need to remove them is that it fills up local disk space

Fixed by using packer!


Support attachments

Add support for archiving email attachments

The main requirement for this feature is that attachments should be stored according to a SHA1 checksum of the file contents after decoding from base64 or whatever, so that we avoid storing duplicate attachments.
Step one is to parse attachments out of the MIME types in using the email module in process_emails.py.
For linking attachments to emails in the database, I suggest a many to many relationship. We need a new table for attachments. This should contain a single field, "sha1", which we use to find the attachment file on the server's storage. Use an intermediate table to store the filename as it appeared in the email.
See here for information about intermediate tables: https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships
Here's an example model:
class AttachmentFile(models.Model):
    sha1 = models.CharField(max_length=SHA1_LENGTH_IN_BYTES)
    def get_filename(self):  # this is the filename as Mailshare stores it on disk
        return settings.MAILSHARE_ATTACHMENT_PATH + '/' + self.sha1[0:2] + '/' + self.sha1[2:SHA1_LENGTH_IN_BYTES]
    def __unicode__(self):
        return self.get_filename()

class MailAttachment(models.Model):
    filename = models.TextField()  # this is the filename as it appeared in the email

Then add this field to the existing Mail model:
    attachments = models.ManyToManyField(AttachmentFile, through='MailAttachment')


Fix imputer

sklearn.preprocessing.Imputer was deprecated and is now no longer available in the most recent versions of scikit-learn. This PR replaces it with its closest equivalent sklearn.impute.SimpleImputer. Updating to SimpleImputer is required for supporting Python 3.8 in the future; see #127.

Hey there @christiemj09, are there any plans to merge this in or to update the library to use the current verison of scikit-learn? Running into an issue when using poetry with this library where poetry's dependency management doesn't play nicely with C libraries or extensions like Cython, which this version of sci-kit learn relies on.

Hey @trevor-laity: Apologies, this is a dangling pull request; see #147. These changes were released in 0.4.0, the most recent version of py-entitymatching. I'll keep this PR open for now to make sure your issue gets sorted out, though it should be closed after.
Installing most recent version of py-entitymatching that depends on scikit-learn>=0.22:
pip install --no-cache-dir py-entitymatching==0.4.0


GH-876: stream.content() swallowing blank space

Fixing an issue where calling stream.content() method swallows leading blank spaces.

Resolves https://github.com/spring-projects/spring-ai/issues/1089
Resolves https://github.com/spring-projects/spring-ai/issues/1089

rebased and merged at 9aee4aac4c805c2810e3ff9a076113b47179ba38


upgrade semver and refactor match_version

While working on the preparation for #1646 I was digging into the match_version logic.
Under the premise that we only support semver-compatible versions and ignore unparsable identifiers I think we can simplify the logic in match_version.
Reusing releases_for_crate leads to one additional query that needs to be done here, which IMO is OK for the sake of readability here.

r? @Nemo157 while checking match_version I saw potential for improvement.
@jyn514 can you have a short look if I might miss something important?
I'm happy to improve further if it's needed.

@Nemo157 do you think you can find time to review this at some point?
I'm happy to add more tests, explanation if needed.

Looks good to me.
One thing that I think could be done, or just left as a TODO comment, is changing MatchSemver from storing a String to storing a semver::Version. That would e.g. remove the re-parsing around web/mod.rs:426.

good idea!
I'll add it to this PR and ping you for the review

@Nemo157 fyi,
I'll put the MatchSemver change into a separate PR, there are perhaps some other improvements I would add then.


Text and icons not showing up in some instances

Duplicate of #135.
Why has the Studio Mod Manager been so unstable for the past few months? Is it Roblox making too many changes?

Closing for duplicate.
This should be fixed in the latest release though.


Pretty Automate load

User Story
We need an easy way to fill Automate with events, Chef Infra run, and InSpec runs that would be typical for the normal user. This would be different than the chef_load process because that provides has randomly generated data. For example, we would not want the event feed so full that individual events can not be seen on the guitar strings.
Provide a way to pass in the Automate URL and token to allow adding this data to any Automate server.
Data we need:
10 days of compliance data. - This could be done with chef_load
10 days of Chef Infra data - This could be done with chef_load
7 days of events - Not so many events that the icons are grouped
Definition of Done
I small set of commands to add the above data to an Automate server.
Demo Script / Repro Steps

Run the newly add commands
Open the event feed and see events for every day but not every hour
Open the infrastructure section and see about 100 nodes checking in every hour or so
Open the compliance section and see about 100 nodes checking in every 6 hours or so

from @danielsdeleo
# Pretty Chef Load

## Users and Use Cases

- PMs want to verify UI features in acceptance and have things look like they would for a user
- ENG want to repro UI bugs in acceptance/dev/etc.
- Easier demos for sales
- Docs want to get screenshots that look realistic from acceptance env.
- UX want to QA design work before merge
- UX want to run usability tests, either in acceptance or ad-hoc
  environments.

## Desired Outcomes

- lowest effort possible to add new data. Ex: UX needs a failing GCP
  compliance scan to facilitate a conversation w/ a PM. This should take
  2 hours or less active dev time. It should be deliverable to a dev
  environment within a day total time.
- enabled in all the test environments except the perf test ones; data
  is suitable for screenshots for docs, PM use for acceptance testing,
  etc. (Implicit requirement is the solution accounts for data "aging"
  behavior in automate)
- provides value to the developers who will need to update the data as
  features are added
- solution can generate data to exercise all the significant features of
  Automate
- consolidate at least some of the different data generation codebases we have
  (chef-load, automate-cli diagnostics, automate studio); don't make it 4 total
  things.

## Solution

### Outline

- A net new thing, but some code might be derived from diagnostics (TBD)
- Provides the capabilities needed to be used in the studio and by diagnostics
  (implies there's a CLI interface and golang interface)
- Each domain service that wants data generation provides a golang package that
  implements an interface to data generation

I'm not totally set on how the continuous mode is implemented. Some options
I like:
- put everything in automate-gateway with the intention that it's moved to
  a new home if it becomes larger/more featureful
- fan out from the gateway. i.e., gateway accepts an API call to enable
  demo-mode, then every interval it makes a call to each domain service to
  handle its own part of the data

Making a separate service is okay. It increases resource usage (if it's enabled
by default) or complexity (if it must be enabled separately). Enabling it
separately also means we can't have a UI switch to enable the demo mode.

### Generator Contract

- GenerateRequestSet: generates one or more request bodies. These likely will
  need to include some metadata about the URL, HTTP method, transport method
  (i.e., HTTP vs. NATS). Can have domain-specific options to facilitate
  developer use cases.
- GenerateRequestSingle: shape of this one is more nebulous, but I want to
  replace the studio helpers that we have now that emit a single request body.
- RunRequestSet: Runs the requests. Returns a save state record. The save state
  needs enough data to verify the requests were properly handled and resulted
  in the desired state saved in the database. E.g., in a REST-y pattern, each
  request would result in one record being created, which you could then test
  for the existence of.
- VerifySaveState: Test that the service has the items in its long-lived
  storage. (`diagnostics` will use this to test upgrades and backup/restore)
- GenerateUpdateRequestSet: generates request bodies that will update the
  existing records. This is used to simulate long-lived nodes sending multiple
  reports over time (which should prevent the nodes from going missing, etc.).
- RunUpdateRequestSet: same as RunRequestSet, but it also takes the prior save
  state and can preserve the knowledge of records that were not updated by the
  request set. For example, if a node was supposed to not send CCRs and go
  missing, the save state still needs to know it exists.
- DestroyRecords: delete all the records in the save state.


Clarification Needed

I think the following statement needs to be clarified:
For non-Virtual Machine Scale Set deployments - For every 20 VMs that you create concurrently, we recommend you keep one replica. For example, if you are creating 120 VMs concurrently using the same image in a region, we suggest you keep at least 6 replicas of your image.
The reason is because you can choose between Standard_LRS, Premium_LRS, and Zone Redundant.
2 issues I have with this:

Clearly the 1 replica per 20 concurrent VMs must be different whether using Standard_LRS and Premium_LRS.  But the documentation doesn't differentiate.
Zone Redundant should be updated to specify whether it's Standard_ZRS or Premium_ZRS

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

ID: 08222316-75a2-004c-01ce-b07f2f80da32
Version Independent ID: 3b76f6cc-b11d-03fe-4ef0-1f1afc31bc83
Content: Share VM images in a compute gallery - Azure Virtual Machines
Content Source: articles/virtual-machines/shared-image-galleries.md
Service: virtual-machines
Sub-service: gallery
GitHub Login: @cynthn
Microsoft Alias: cynthn

Hi @ElanShudnow
Thanks for your question. We are checking on this and will respond to you soon.

Hello @ElanShudnow,
I am validating the feedback with the content author. I will keep you updated.

HI @ElanShudnow,
Just wanted to keep you posted on this. This is being reviewed internally by the PM team and we shall update you once we clarify this with the team.

@ElanShudnow,
Please find the comments inline.
Clearly the 1 replica per 20 concurrent VMs must be different whether using Standard_LRS and Premium_LRS. But the documentation doesn't differentiate.
– The guidance is same for different storage types.
Zone Redundant should be updated to specify whether it's Standard_ZRS or Premium_ZRS
– This should be ‘Standard_ZRS’
Feel free to reach out for any further clarification.


SPbSUTD Higher School of Technology and Energy

SPbSUTD Higher School of Technology and Energy
suitd.ru
gturp.spb.ru

@KarpovSS Pull request merged. Thank you!


Implement WordPress.org comments

Closes https://github.com/frontity/saturn-theme/issues/195
Also, this PR should be rejected!

Also, this PR should be rejected!

You can close it yourself :)

Ready for review, @luisherranz

Ready for deploy 👏

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Tests using ScheduledProcess.shouldExit() are flaky

 Issue by whesse
Originally opened as dart-lang/sdk#15654

There is a flaky failure on MacOS of pkg/scheduled_test/test/scheduled_process, on subtest
  "remainingStdout returns the remaining stdout
   after the lines consumed by nextLine"
This is due to the fact that process.shouldExit(0) appears in the schedule after other scheduled items.  In fact, unless the process is known to wait on input before exiting, the use of process.shouldExit() is probably wrong.
The use of pumpEventQueue may make it correct in the case where everything is on the event queue, but IO is not all in the same thread.  The read events from process.stdout may not happen until after the process exit event happens, and the Dart thread may be allowed to run through the microtask event loop 20 times before the IO thread is scheduled again, and the read event fires.  In fact, the process exit is detected by a third thread, separate from the IO thread, so there is no guarantee about when the stdout can be read.
So even when the process is known to wait on some input, process.shouldExit has to be scheduled before that input is sent.
But then the schedule waits on the exit code before sending that input.
So we hang.
All we ever know when a process ends, after sending output, is that

At some point in the future, we will receive a exit event.
At some point in the future, we will receive a read event on stdout.
Nothing about the sequence, or that they will happen in the current microtask loop schedule, can be assumed.

I will note that the last paragraph should be put into the documentation of dart:io Process.

 Comment by munificent

Oof, do you have any suggestions for how we should proceed here?
Obviously, we need the ability to write reliable, deterministic tests that spawn processes and validate what they do. What's the best way to implement those tests?

 Comment by skabet

This is the(a) test in question:
  expectTestsPass("nextErrLine returns the next line of stderr from the "
      "process", () {
    test('test', () {
      var process = startDartProcess(r'''
          stderr.write("hello\n\nworld\n");
          stderr.write("hi");
          ''');
      expect(process.nextErrLine(), completion(equals('hello')));
      expect(process.nextErrLine(), completion(equals('')));
      expect(process.nextErrLine(), completion(equals('world')));
      expect(process.nextErrLine(), completion(equals('hi')));
      process.shouldExit(0);
    });
  });
Here shouldExit is called after the process is spawned and expect is issued for several async operations. Looking at shouldExit:
  void shouldExit([int expectedExitCode]) {
    if (_endScheduled) {
      throw new StateError("shouldExit() or kill() already called.");
    }
    _endScheduled = true;
    _taskBeforeEnd = currentSchedule.tasks.contents.last;
    schedule(() {
      _endExpected = true;
      return _exitCode.then((exitCode) {
        if (expectedExitCode != null) {
          expect(exitCode, equals(expectedExitCode));
        }
      });
    }, "waiting for process '$description' to exit");
  }
We can see that _endExpected is not set until this 'schedule'-callback is invoked, that is, some time in the future, after the current Dart message has been handled.
Now, in _handleExit we have the following 'guard' for when a process has terminated.
    _process.then((p) => Chain.track(p.exitCode)).then((exitCode) {
      ...
      pumpEventQueue().then(...
      ...
    });
As the process can terminate at any point after it was started, it's possible it exited _before_ the 'schedule(...)' callback in shouldExit is executed. That means that, even though the event-queue is tried to be emptied, the _endExpected may be false and produce the following error:
        if (!_endExpected) {
          fail("Process '$description' ended earlier than scheduled "
               "with exit code $exitCode.");
        }
Even though the process terminated as expected.
To answer your questions:

Oof, do you have any suggestions for how we should proceed here?

First off, I've a hard time understanding how scheduled_test is helping out here. It's making the execution order very implicit (though errors slightly more explicit). When I see code using 'scheduled_test', I have no easy way to follow the execution pattern as things are not called as part of the completion of a future, but rather when it's their time in the queue.
That being said, in this particular case, _endExpected should probably be set to true as soon as shouldExit is called. It should _never_ be the case that you'd should need to empty the event-loop (this can never be guaranteed and is bound to lead to flakyness).
IMO, to get reliable processes running, use their futures and streams (which you are already do), and don't relay on 'events' being done in the event-loop. Use futures for this.

Why haven't we ever seen this when running local tests?

We have. Once in a 100-1000 runs. Particular scheduled_process_test has been flaky over time, along with some pub tests complaining about exit code.
As this is all part of a possible, but yet likely, scenario, don't expect it to just happen. Sometimes it's only easy to trigger if many tests are run at once (I normally use a 32 simultaneous runs in a loop, to trigger stuff like this. In this case, it appears to be easier to reproduce on Mac.
Also, remove all calls to pumpEventQueue should help (in general, it should never be required to perform such a task).

When you say "the process is known to wait on some input", are you referring to input being sent to stdin, or output emitted by stdout?

This test is exiting as soon as it has printed. One could argue that it's not exiting before the print is done, thus before the stdout of the parent process was read. However, as the OS can buffer data, this is not the case. This particular process will exit at will. However, if the process was blocking until, let's say the byte '5' was received on stdin, it would be possible to block the exit of the child process, until 'shouldExit-schedule' has been invoked. However, this is not a fix, just a workaround in this particular case. It's more to point out that processes handling some http-servers, etc, may not be hit by this.

If ScheduledProcess waits for stdin/stdout to close before it starts complaining about unexpected errors, would that fix the issue?

Yes and no. It may be, that reading stdout/stderr may delay the order of events enough for it to be harder to hit, but it won't fix the underlying issue that a process can exit before shouldExit is fully set up.
Let me know if you have more questions. I'd be glad to help get this sorted out!

 Comment by nex3

A few more questions:
* Why haven't we ever seen this when running local tests?
* When you say "the process is known to wait on some input", are you referring to input being sent to stdin, or output emitted by stdout?
  * If the former, how does this relate to the test in question, which doesn't interact with stdin at all?
  * If the latter, in what sense is the process waiting?
* If ScheduledProcess waits for stdin/stdout to close before it starts complaining about unexpected errors, would that fix the issue?

 Comment by nex3

You're right; I hadn't thought it through thoroughly. It's probably sufficient just to make sure the debug output has an indication of when the subprocess exited.

 Comment by nex3

I've a hard time understanding how scheduled_test is helping out here.

This test in particular is testing a component of scheduled_test. In general, doing complicated assertions on processes' stdout/stderr in conjunction with providing input, serving HTTP requests, and checking exit codes is extremely difficult when using raw streams and futures. scheduled_test and scheduled_process make these tests much easier to read, write, and debug.
If you're interested in a deeper understanding of why scheduled_test is useful, it might be an informative exercise to rewrite a complicated pub test (e.g. a test in sdk/lib/_internal/pub/test/oauth2) to use raw futures and streams instead.

remove all calls to pumpEventQueue should help (in general, it should never be required to perform such a task).

There are some cases where it's impossible to avoid using pumpEventQueue, by virtue of the fact that the code that wants to wait for asynchronous operations to complete may not have any sort of access to the asynchronous operations themselves. For example, in scheduled_test's MockClock implementation, the clock needs to wait for all asynchronous operations to complete between each tick, but it doesn't have access to any futures or streams that it can wait on.
That said, it's possible that many of the pumpEventQueue calls in the scheduled classes can hook into the current Schedule to get a more accurate representation of when there are no pending events. In addition, Zones now exist, which provide a better means of tracking unrelated callbacks. Once I get some time I'd like to refactor ScheduledTest to take advantage of those.

Yes and no. It may be, that reading stdout/stderr may delay the order of events enough for it to be harder to hit, but it won't fix the underlying issue that a process can exit before shouldExit is fully set up.

My proposal is that _endExpected only be checked once both stdout and stderr have closed. So even if the process exits before shouldExit's scheduled callback runs, an error won't be raised unless stdout and stderr close before producing the expected output.

It looks to me like there are two separate things you might want to test, at different points in the schedule.

You're correct about the assertions being made, but I don't think it provides value to test authors to separate them explicitly. Handling the "won't exit early" assertion automatically both removes the amount of boilerplate that goes into handling passing input to the process and allows the output in the case of a test failure to be clearer.

Added Accepted label.

 Comment by whesse

I would like more detail on the last three paragraphs of the last comment.  If _endExpected is only checked after stdout and stderr have closed, then the only time that _endExpected could detect an error is if we have shouldExit after all the expected reads.  But if we put it immediately after the reads, and use pushevents to make _endExpected true, then the check is vacuous again.  I just find it hard to find a scenario where _endExpected detects an error that isn't detected by something else.
 It seems the whole check becomes sort of pointless then - it checks that process exit isn't signalled before shouldExit is called but after the streams close, but that error will also be detected by the streams not getting what they expect, since shouldExit will always be placed before the last stream read.  Unless we are going to place shouldExit after that, and rely on pumping to set _endExpected.
I really don't see why these two expectations should be happening at the same time in your tests, and be a single call: (A) We won't get an exit signal before this point, and (B) We can (and will) wait for the exit signal at this point.
By making all this special handling of the exit timing checking, we are trying to artificially set the "no exit before this point" time (check A)  to be correctly virtually placed in the schedule at some earlier point, based on "shouldExit" being placed in the schedule at the time we want to wait on the exit signal (check B).
So please expand on the last three paragraphs, delaying the check of _endExpected and why the check for early exit is ever useful, and not redundant given the rest of the schedule.
I guess I am proposing that shouldExit should just be a wait on process exit, and that there will rarely be a need for a check for early exit, given that other checks in the schedule will fail.  And that determining the point in the schedule at which an exit is really "early", based on the point where we wait for exit in the schedule, is a complex and perhaps useless task.

 Comment by nex3

Fixed in dart-lang/sdk@4121e1df5362aaa163acbf7dcb1efb58c68be240.

Added Fixed label.

 Comment by anders-sandholm

Removed Library-ScheduledTest label.
Added Pkg-ScheduledTest label.

 Comment by whesse

It looks to me like there are two separate things you might want to test, at different points in the schedule.  Separating them makes everything much clearer:

The process does not exit until this code has executed.
     This will not always be relevant - in the example test, the process can exit any time after it is created.  Only if the process waits for input before exiting would this test be desired.

The test can block, waiting for the process to exit, at this point, and will not be deadlocked.

Separating these two would make things simpler.  The first is just a scheduled step checking "The process is not exited", and the second is just a scheduled step that waits on the exitCode or the exit.


KafkaConsumer#stream "should handle rebalance" test failure

I hit this while running tests for (hopefully unrelated) changes locally. The full failure message was:
should handle rebalance *** FAILED *** (5 minutes, 11 seconds)
[info]   200 equaled 200, but Map("key-198" -> 1, "key-78" -> 3, "key-89" -> 2, "key-105" -> 1, "key-123" -> 1, "key-93" -> 2, "key-112" -> 2, "key-8" -> 2, "key-44" -> 2, "key-74" -> 2, "key-0" -> 2, "key-116" -> 2, "key-85" -> 3, "key-169" -> 1, "key-187" -> 1, "key-152" -> 1, "key-119" -> 1, "key-108" -> 1, "key-27" -> 3, "key-22" -> 2, "key-176" -> 1, "key-11" -> 2, "key-59" -> 2, "key-49" -> 3, "key-163" -> 1, "key-43" -> 2, "key-166" -> 2, "key-38" -> 3, "key-100" -> 1, "key-71" -> 3, "key-170" -> 1, "key-127" -> 1, "key-138" -> 1, "key-155" -> 1, "key-96" -> 2, "key-82" -> 2, "key-181" -> 1, "key-32" -> 2, "key-16" -> 2, "key-193" -> 1, "key-192" -> 2, "key-159" -> 2, "key-134" -> 2, "key-148" -> 2, "key-144" -> 1, "key-62" -> 2, "key-5" -> 3, "key-67" -> 3, "key-51" -> 2, "key-111" -> 1, "key-188" -> 2, "key-177" -> 2, "key-196" -> 1, "key-115" -> 1, "key-79" -> 3, "key-42" -> 2, "key-104" -> 1, "key-31" -> 2, "key-122" -> 1, "key-56" -> 2, "key-28" -> 2, "key-58" -> 3, "key-10" -> 3, "key-75" -> 2, "key-109" -> 1, "key-69" -> 2, "key-97" -> 2, "key-185" -> 1, "key-21" -> 2, "key-17" -> 2, "key-174" -> 1, "key-92" -> 3, "key-199" -> 2, "key-86" -> 2, "key-110" -> 1, "key-81" -> 2, "key-70" -> 3, "key-158" -> 1, "key-143" -> 1, "key-126" -> 1, "key-39" -> 3, "key-9" -> 2, "key-180" -> 1, "key-147" -> 1, "key-63" -> 3, "key-137" -> 1, "key-121" -> 2, "key-68" -> 2, "key-133" -> 2, "key-165" -> 1, "key-191" -> 1, "key-46" -> 3, "key-57" -> 2, "key-35" -> 2, "key-2" -> 3, "key-154" -> 1, "key-52" -> 2, "key-4" -> 2, "key-146" -> 1, "key-106" -> 1, "key-157" -> 1, "key-94" -> 2, "key-25" -> 3, "key-178" -> 2, "key-24" -> 3, "key-140" -> 2, "key-30" -> 3, "key-14" -> 2, "key-195" -> 1, "key-72" -> 2, "key-87" -> 2, "key-161" -> 1, "key-168" -> 1, "key-189" -> 2, "key-150" -> 2, "key-41" -> 3, "key-117" -> 1, "key-153" -> 1, "key-91" -> 2, "key-13" -> 2, "key-173" -> 1, "key-76" -> 3, "key-114" -> 1, "key-131" -> 1, "key-164" -> 1, "key-184" -> 2, "key-103" -> 1, "key-120" -> 1, "key-64" -> 2, "key-125" -> 2, "key-65" -> 2, "key-54" -> 2, "key-80" -> 2, "key-47" -> 2, "key-53" -> 2, "key-190" -> 2, "key-160" -> 1, "key-132" -> 1, "key-139" -> 1, "key-142" -> 2, "key-136" -> 1, "key-1" -> 2, "key-3" -> 3, "key-29" -> 2, "key-98" -> 3, "key-18" -> 3, "key-34" -> 3, "key-20" -> 2, "key-36" -> 2, "key-83" -> 2, "key-45" -> 2, "key-128" -> 2, "key-95" -> 3, "key-40" -> 2, "key-183" -> 1, "key-7" -> 2, "key-15" -> 2, "key-130" -> 1, "key-88" -> 2, "key-26" -> 2, "key-118" -> 2, "key-141" -> 2, "key-77" -> 3, "key-107" -> 1, "key-102" -> 1, "key-182" -> 2, "key-23" -> 3, "key-162" -> 2, "key-90" -> 2, "key-60" -> 2, "key-151" -> 1, "key-12" -> 3, "key-171" -> 1, "key-113" -> 2, "key-194" -> 1, "key-33" -> 3, "key-55" -> 2, "key-48" -> 3, "key-135" -> 1, "key-156" -> 1, "key-197" -> 1, "key-66" -> 3, "key-101" -> 2, "key-175" -> 2, "key-37" -> 2, "key-124" -> 1, "key-167" -> 1, "key-99" -> 2, "key-50" -> 3, "key-129" -> 2, "key-172" -> 1, "key-149" -> 1, "key-19" -> 2, "key-61" -> 2, "key-6" -> 3, "key-84" -> 2, "key-186" -> 2, "key-179" -> 1, "key-145" -> 1, "key-73" -> 3) did not equal Map("key-198" -> 1, "key-78" -> 2, "key-89" -> 2, "key-105" -> 1, "key-123" -> 1, "key-93" -> 2, "key-112" -> 1, "key-8" -> 2, "key-44" -> 2, "key-74" -> 2, "key-0" -> 2, "key-116" -> 1, "key-85" -> 2, "key-169" -> 1, "key-187" -> 1, "key-152" -> 1, "key-119" -> 1, "key-108" -> 1, "key-27" -> 2, "key-22" -> 2, "key-176" -> 1, "key-11" -> 2, "key-59" -> 2, "key-49" -> 2, "key-163" -> 1, "key-43" -> 2, "key-166" -> 1, "key-38" -> 2, "key-100" -> 1, "key-71" -> 2, "key-170" -> 1, "key-127" -> 1, "key-138" -> 1, "key-155" -> 1, "key-96" -> 2, "key-82" -> 2, "key-181" -> 1, "key-32" -> 2, "key-16" -> 2, "key-193" -> 1, "key-192" -> 1, "key-159" -> 1, "key-134" -> 1, "key-148" -> 1, "key-144" -> 1, "key-62" -> 2, "key-5" -> 2, "key-67" -> 2, "key-51" -> 2, "key-111" -> 1, "key-188" -> 1, "key-177" -> 1, "key-196" -> 1, "key-115" -> 1, "key-79" -> 2, "key-42" -> 2, "key-104" -> 1, "key-31" -> 2, "key-122" -> 1, "key-56" -> 2, "key-28" -> 2, "key-58" -> 2, "key-10" -> 2, "key-75" -> 2, "key-109" -> 1, "key-69" -> 2, "key-97" -> 2, "key-185" -> 1, "key-21" -> 2, "key-17" -> 2, "key-174" -> 1, "key-92" -> 2, "key-199" -> 1, "key-86" -> 2, "key-110" -> 1, "key-81" -> 2, "key-70" -> 2, "key-158" -> 1, "key-143" -> 1, "key-126" -> 1, "key-39" -> 2, "key-9" -> 2, "key-180" -> 1, "key-147" -> 1, "key-63" -> 2, "key-137" -> 1, "key-121" -> 1, "key-68" -> 2, "key-133" -> 1, "key-165" -> 1, "key-191" -> 1, "key-46" -> 2, "key-57" -> 2, "key-35" -> 2, "key-2" -> 2, "key-154" -> 1, "key-52" -> 2, "key-4" -> 2, "key-146" -> 1, "key-106" -> 1, "key-157" -> 1, "key-94" -> 2, "key-25" -> 2, "key-178" -> 1, "key-24" -> 2, "key-140" -> 1, "key-30" -> 2, "key-14" -> 2, "key-195" -> 1, "key-72" -> 2, "key-87" -> 2, "key-161" -> 1, "key-168" -> 1, "key-189" -> 1, "key-150" -> 1, "key-41" -> 2, "key-117" -> 1, "key-153" -> 1, "key-91" -> 2, "key-13" -> 2, "key-173" -> 1, "key-76" -> 2, "key-114" -> 1, "key-131" -> 1, "key-164" -> 1, "key-184" -> 1, "key-103" -> 1, "key-120" -> 1, "key-64" -> 2, "key-125" -> 1, "key-65" -> 2, "key-54" -> 2, "key-80" -> 2, "key-47" -> 2, "key-53" -> 2, "key-190" -> 1, "key-160" -> 1, "key-132" -> 1, "key-139" -> 1, "key-142" -> 1, "key-136" -> 1, "key-1" -> 2, "key-3" -> 2, "key-29" -> 2, "key-98" -> 2, "key-18" -> 2, "key-34" -> 2, "key-20" -> 2, "key-36" -> 2, "key-83" -> 2, "key-45" -> 2, "key-128" -> 1, "key-95" -> 2, "key-40" -> 2, "key-183" -> 1, "key-7" -> 2, "key-15" -> 2, "key-130" -> 1, "key-88" -> 2, "key-26" -> 2, "key-118" -> 1, "key-141" -> 1, "key-77" -> 2, "key-107" -> 1, "key-102" -> 1, "key-182" -> 1, "key-23" -> 2, "key-162" -> 1, "key-90" -> 2, "key-60" -> 2, "key-151" -> 1, "key-12" -> 2, "key-171" -> 1, "key-113" -> 1, "key-194" -> 1, "key-33" -> 2, "key-55" -> 2, "key-48" -> 2, "key-135" -> 1, "key-156" -> 1, "key-197" -> 1, "key-66" -> 2, "key-101" -> 1, "key-175" -> 1, "key-37" -> 2, "key-124" -> 1, "key-167" -> 1, "key-99" -> 2, "key-50" -> 2, "key-129" -> 1, "key-172" -> 1, "key-149" -> 1, "key-19" -> 2, "key-61" -> 2, "key-6" -> 2, "key-84" -> 2, "key-186" -> 1, "key-179" -> 1, "key-145" -> 1, "key-73" -> 2) (KafkaConsumerSpec.scala:81)

Luckily the keys were ordered, so a diff was useful:
3c3
<   "key-78" -> 3,
---
>   "key-78" -> 2,
8c8
<   "key-112" -> 2,
---
>   "key-112" -> 1,
13,14c13,14
<   "key-116" -> 2,
<   "key-85" -> 3,
---
>   "key-116" -> 1,
>   "key-85" -> 2,
20c20
<   "key-27" -> 3,
---
>   "key-27" -> 2,
25c25
<   "key-49" -> 3,
---
>   "key-49" -> 2,
28,29c28,29
<   "key-166" -> 2,
<   "key-38" -> 3,
---
>   "key-166" -> 1,
>   "key-38" -> 2,
31c31
<   "key-71" -> 3,
---
>   "key-71" -> 2,
42,45c42,45
<   "key-192" -> 2,
<   "key-159" -> 2,
<   "key-134" -> 2,
<   "key-148" -> 2,
---
>   "key-192" -> 1,
>   "key-159" -> 1,
>   "key-134" -> 1,
>   "key-148" -> 1,
48,49c48,49
<   "key-5" -> 3,
<   "key-67" -> 3,
---
>   "key-5" -> 2,
>   "key-67" -> 2,
52,53c52,53
<   "key-188" -> 2,
<   "key-177" -> 2,
---
>   "key-188" -> 1,
>   "key-177" -> 1,
56c56
<   "key-79" -> 3,
---
>   "key-79" -> 2,
63,64c63,64
<   "key-58" -> 3,
<   "key-10" -> 3,
---
>   "key-58" -> 2,
>   "key-10" -> 2,
73,74c73,74
<   "key-92" -> 3,
<   "key-199" -> 2,
---
>   "key-92" -> 2,
>   "key-199" -> 1,
78c78
<   "key-70" -> 3,
---
>   "key-70" -> 2,
82c82
<   "key-39" -> 3,
---
>   "key-39" -> 2,
86c86
<   "key-63" -> 3,
---
>   "key-63" -> 2,
88c88
<   "key-121" -> 2,
---
>   "key-121" -> 1,
90c90
<   "key-133" -> 2,
---
>   "key-133" -> 1,
93c93
<   "key-46" -> 3,
---
>   "key-46" -> 2,
96c96
<   "key-2" -> 3,
---
>   "key-2" -> 2,
104,108c104,108
<   "key-25" -> 3,
<   "key-178" -> 2,
<   "key-24" -> 3,
<   "key-140" -> 2,
<   "key-30" -> 3,
---
>   "key-25" -> 2,
>   "key-178" -> 1,
>   "key-24" -> 2,
>   "key-140" -> 1,
>   "key-30" -> 2,
115,117c115,117
<   "key-189" -> 2,
<   "key-150" -> 2,
<   "key-41" -> 3,
---
>   "key-189" -> 1,
>   "key-150" -> 1,
>   "key-41" -> 2,
123c123
<   "key-76" -> 3,
---
>   "key-76" -> 2,
127c127
<   "key-184" -> 2,
---
>   "key-184" -> 1,
131c131
<   "key-125" -> 2,
---
>   "key-125" -> 1,
137c137
<   "key-190" -> 2,
---
>   "key-190" -> 1,
141c141
<   "key-142" -> 2,
---
>   "key-142" -> 1,
144c144
<   "key-3" -> 3,
---
>   "key-3" -> 2,
146,148c146,148
<   "key-98" -> 3,
<   "key-18" -> 3,
<   "key-34" -> 3,
---
>   "key-98" -> 2,
>   "key-18" -> 2,
>   "key-34" -> 2,
153,154c153,154
<   "key-128" -> 2,
<   "key-95" -> 3,
---
>   "key-128" -> 1,
>   "key-95" -> 2,
162,164c162,164
<   "key-118" -> 2,
<   "key-141" -> 2,
<   "key-77" -> 3,
---
>   "key-118" -> 1,
>   "key-141" -> 1,
>   "key-77" -> 2,
167,169c167,169
<   "key-182" -> 2,
<   "key-23" -> 3,
<   "key-162" -> 2,
---
>   "key-182" -> 1,
>   "key-23" -> 2,
>   "key-162" -> 1,
173c173
<   "key-12" -> 3,
---
>   "key-12" -> 2,
175c175
<   "key-113" -> 2,
---
>   "key-113" -> 1,
177c177
<   "key-33" -> 3,
---
>   "key-33" -> 2,
179c179
<   "key-48" -> 3,
---
>   "key-48" -> 2,
183,185c183,185
<   "key-66" -> 3,
<   "key-101" -> 2,
<   "key-175" -> 2,
---
>   "key-66" -> 2,
>   "key-101" -> 1,
>   "key-175" -> 1,
190,191c190,191
<   "key-50" -> 3,
<   "key-129" -> 2,
---
>   "key-50" -> 2,
>   "key-129" -> 1,
196c196
<   "key-6" -> 3,
---
>   "key-6" -> 2,
198c198
<   "key-186" -> 2,
---
>   "key-186" -> 1,
201c201
<   "key-73" -> 3
---
>   "key-73" -> 2

It's not consistently reproducible, so there must be a race condition somewhere?

It looks like every record is being consumed one extra time. I've not seen this before. Would be good, albeit difficult, to rule out your local changes, and see if this happens on master.


read temperature using sensor address

Is it possible?
For eg.  sensor.getTempC(SENSOR_ADDRESS);
I can't find in documentation.

Thanks for the question.
Will check for an answer later (almost diner time here)

First this library does not support the call as you propose.
This library uses the paradigm of one sensor per IO pin so you don't need to use any address.
You always know e.g. that inside is pin4 and outside is pin5, even after replacing sensors your sketch will just work.
That said, under the hood it uses an address, the first address it finds with
bool isConnected(uint8_t retries);

The question is:  what do you expect the function call you propose should do?
possible scenario's
So one could pretty easy implement an
float getTempC(SENSOR_ADDRESS)
{
  if (SENSOR_ADDRESS != internal address) return -127;  //  typical error code for the DS18B20
  return getTempC();
}

or
float getTempC(SENSOR_ADDRESS)
{
  internal address = SENSOR_ADDRESS;
  return getTempC();
}

Two straightforward implementationd that differ a lot in behavior.

@rozrabiak
Q: The question is: what do you expect the function call you propose should do?

As there is no answer on my question, I close this issue.


⚠ Bofrost.fr has degraded performance

In c967030, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1283 ms

Resolved: Bofrost.fr performance has improved in 44d079c.


python API debugging best practices

Hi guys,
I work for ARM Ltd and we are looking into adding int16 quantization support for the TFLite format. For that, I would need to change the source code of some files, including the command-line interface implemented in /tensorflow/lite/python/tflite_convert.py. I was just wondering what is the most efficient way to debug my code and iterate quickly?
I am currently using CLIon+Google Bazel Plugin. This combination allows quick and convenient code development process. Thanks to the tools, I can place breakpoints, see variables, etc(only for CPP though). What is the most efficient way to debug python APIs?
I get, for example, I could rebuild the tflite_convert tool every time with the following command:
bazel build //tensorflow/lite/python:tflite_convert.
This is fine, but I can’t debug this executable, which is inconvenient and does not allow quick iterations.
May I ask you to share your best practices for tensorflow python APIs development?
Many thanks,
Konstantin

I prefer logging info  then setting breakpoints and debugging.
I have tried someway to debug python with cpp library, it's soo complicated

Hi @konstantinARM
I would like to ask you which version of tensorflow, clion, can teach me the configuration process.

It has already been long time ago this is issued. But I am having hard time to build tensorflow using Clion. I want to do the exactly same thing you(issue writer) did such as adding break point in c++ files and build and debug using them. If you can see it, Could you explain how you did it? Thank you.

Hi, there is a document available on Tensorflow on same topic Post-training integer quantization with int16 activations. You can try the same.
Feel free to reopen the issue if the error still persists, Thank you.


Dart VM version: 2.9.0-14.1.beta does not recognise the parameter modifier "required".

# dart --version
Dart VM version: 2.9.0-14.1.beta (beta) (Tue Jun 9 10:52:57 2020 +0200) on "linux_x64"

The program below defines the function selectLargerInt() with named required parameters.
int selectLargerInt({
  required int first,
  required int second,
}) =>
    (first > second) ? first : second;

void main(List<String> arguments) {
  print(
    selectLargerInt(first: 29, second: 17),
  );
}

Running the program results in the following error:
$ dart --enable-experiment=non-nullable main.dart
main.dart:2:16: Error: Expected '}' before this.
  required int first,
               ^^^^^
main.dart:2:3: Error: Type 'required' not found.
  required int first,
  ^^^^^^^^
main.dart:2:3: Error: 'required' isn't a type.
  required int first,
  ^^^^^^^^
main.dart:5:14: Error: Getter not found: 'second'.
    (first > second) ? first : second;
             ^^^^^^
main.dart:5:6: Error: Getter not found: 'first'.
    (first > second) ? first : second;
     ^^^^^
main.dart:5:24: Error: Getter not found: 'first'.
    (first > second) ? first : second;
                       ^^^^^
main.dart:5:32: Error: Getter not found: 'second'.
    (first > second) ? first : second;
                               ^^^^^^
main.dart:9:21: Error: No named parameter with the name 'first'.
    selectLargerInt(first: 29, second: 17),
                    ^^^^^
main.dart:1:5: Context: Found this candidate, but the arguments don't match.
int selectLargerInt({
    ^^^^^^^^^^^^^^^

Am I missing something? Do is need to add another option when running the program? The Dart VM seems to interpret the modifier required as a (missing) type.

After installing the latest Dart SDK version of the stable branch: 2.9.0, the test program mentioned above executes as expected:
# dart --enable-experiment=non-nullable main.dart
29

Surprisingly, the Dart VM version remained the same:
# dart --version
Dart VM version: 2.9.0-14.1.beta (beta) (Tue Jun 9 10:52:57 2020 +0200) on "linux_x64"

# dartanalyzer --version
dartanalyzer version 2.9.0

Closing this issue now.


NetworkedVar data loss during scene load on soft-sync objects

Describe the bug
If a NetworkedVar value is changed on a soft-sync object while a client is still loading the scene containing the soft-sync object. The data of the changed value could be received before the client has completed loading the scene and the client wont know what object the NetworkedVar data belonged to, since it has not spawned the object yet. The data of the changed NetworkedVar will be discarded and the NetworkedVar will no longer be in sync. Even worse, if it was an incremental data change it will have corrupted all future changes as well.
To Reproduce
Steps to reproduce the behavior:

Create a scene that has a soft sync object with a networked var.
Switch to that scene (make sure it is a slow scene load) and as soon as it is loaded change the NetworkedVar value.
Observe on the client when it also has completed the scene load that the values are no longer in sync.

Expected behavior
I expect the soft sync values to be in sync even if changing their values while a client is still loading the scene.
Environment (please complete the following information):

OS: [e.g. Windows 10]
Unity Version: [e.g. 2018.3.7f1]
MLAPI Version: [e.g. v10.11.1]

I have done extensive testing on #270 and cannot produce any problems with it. If you encounter any problems. Open a new issue please. Sorry for the huge delay on this fix.

:tada: This issue has been resolved in version 11.9.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


InShot for PC Windows 10: Powerful Video Editing at Your Fingertips

InShot for PC on Windows 10 brings the popular mobile video editing app to your desktop, offering a more expansive and efficient workspace. With InShot, users can easily trim, merge, and enhance videos with various effects, filters, and transitions. It also provides tools for adding music, text, and stickers, making video creation more creative and fun. Whether you're creating social media content, vlogs, or presentations, InShot for PC delivers a user-friendly experience. The app's compatibility with Windows 10 ensures seamless performance and makes editing videos faster and more precise on a larger screen.

📥👉Download InShot for PC Crack!


EDUCATION-483 Adds support for configurable Redis username and password.

This adds support for a configurable Redis username and password via environment variables.  Allows RU202 source code to be run with Redis that has a password set and/or Redis 6 with a username and password set.

@simonprickett I missed this until now, but it looks good to me! 👍


How do I change the font size of the segmented control button text

Hello! Nice work. I want you to please help with changing the font size of the segmented control button texts. In which method can I add this button.titleLabel?.font = UIFont.systemFont(ofSize: 13)?

Okay I was able to do it by setting it inside the configureButton()

Hey were you able to set  actions when slide is changed?


Update export-service.html

isPrimitive()判断类是否是基本类型，而不是文中写的私有类型

Thanks for your RP, however you make a mistake, you correct the generated HTML page, actually you should redo in https://github.com/apache/incubator-dubbo-website/blob/asf-site/docs/zh-cn/source_code_guide/export-service.md, and then this Markdown file will be built as an HTML file automatically.


fix(HLS): Fix bad warning when playing HLS-AES128

Test stream: https://bitmovin-a.akamaihd.net/content/art-of-motion_drm/m3u8s/11331.m3u8


Feature/return_gt

Adds optional return of "closest ground truth". This returns the ground truth in a format that is equivalent to the original object, but as close as possible to the prediction. For example, multi-option tuples are reduced to the best match, lists and dicts are reordered to match the prediction, and None-values are replaced by equivalent falsy values, if such a value was predicted

Just checked it and looks good, but documentation is missing:

The doc string of anls_score did not change and return_gt is not described there.
We should write something in the Readme -- what it is and one or two examples.

Just checked it and looks good, but documentation is missing:

The doc string of anls_score did not change and return_gt is not described there.
We should write something in the Readme -- what it is and one or two examples.

True, did not notice that. I'll write something.


Box86 System

Hello,
I've managed to get some linux x86 games runnings in ports using this:
https://github.com/ptitSeb/box86
I think it could work a system for launching x86 games (undertale for example).
Thanks.

Yep, this is definitely in my plans already.


Importing Teaching requests through Data Exchange

Is it possible to import the required instructor attributes for each course through data exchange? If it’s not, it looks like a important feature that’s missing. There is an attributePref element described in the DTD of the interfaces, but it looks like it's not used anywhere:
/unitime-master/Documentation/Interfaces% cat Preferences.dtd | grep -i attr
<!ELEMENT attributePref EMPTY >
<!ATTLIST attributePref level ( R | -2 | -1 | 0 | 1 | 2 | P ) #REQUIRED >
<!ATTLIST attributePref attribute CDATA #REQUIRED >

The Preferences XML import/export currently imports/exports all preferences that can be set on classes, scheduling subparts, departments, and instructors. It does not create any teaching requests.
At the moment teaching requests and instructor attributes can be imported with the Instructor Assignment Imports scripts which are described in the Instructor Scheduling Manual, see Data Import / Export section. These scripts can be easily modified to fit the needs of a particular institution.


optimize bulk ASCII writes

The code paths for that already exist in the grid PR (#342) but compile-time disabled due to being unstable. That should be taken care of in its own commit.

done. yippieyayay


Document required branch protection fields.

All of those fields are documented as required at https://developer.github.com/v3/repos/branches/#update-branch-protection.
In #512, we changed the API to better reflect that. However, it should still be documented that the fields are required. This is consistent with the other required fields that are also documented as required.
Additionally, note that empty slices must be non-nil. From running integration tests, I've seen that passing nil slices (which get encoded as null in via encoding/json) resulted in invalid request errors such as:
No subschema in "anyOf" matched.
For 'properties/users', nil is not an array.
For 'properties/teams', nil is not an array.
Not all subschemas of "allOf" matched.
For 'anyOf/1', {"users"=>nil, "teams"=>nil} is not a null. []

Follows #512.
/cc @alindeman since you worked on #512 where we discussed this.

An alternative solution to consider is for us to automatically convert nil slices into empty (non-nil) slices when sending requests. That way we don't have to document that nil slices shouldn't be used.
I suspect doing that could be slightly better, but I'm also okay with the current solution if others think it's fine.

I think that documenting this is excellent.  If someone would like to automatically convert the nil slices to non-nil empty slices and remove the comments, that might make for a nice starter project and I would approve that too.

Sounds good. I'll leave this for a few days in case @alindeman would like to leave any comments, then merge.


Conflict in Nat mapping

Don't use port 0 heh.
Terraria Server v<IP_ADDRESS>

Listening on port 0
Type 'help' for a list of commands.

8/21/2015 12:24:46 AM Command> Ready for commands.
8/21/2015 12:24:46 AM Pool> Failed to create NAT device mapping:
Mono.Nat.MappingException: Error 718: ConflictInMappingEntry
   at Mono.Nat.Upnp.UpnpNatDevice.EndCreatePortMap(IAsyncResult result)
   at Mono.Nat.AbstractNatDevice.CreatePortMap(Mapping mapping)
   at TDSM.API.Callbacks.NAT.NatUtility_DeviceFound(Object sender, DeviceEventArgs e)

Decided to remove NAT from OTA & TDSM. A plugin can achieve this.


Adding benchmark workflow for queries with filters

Signed-off-by: Martin Gaievski<EMAIL_ADDRESS>Description
Adding ability to run benchmark using k-NN queries with filters. There are two main parts in this change:

data ingestion piece. new script for data set enrichment that builds hdf5 dataset with additional attributes (for now string and int attributes are supported). new test step that can read and ingest data with attributes.
query piece. new test step that builds test query with added filter based on provided filter definition. filters can be defined with scoring script or in 'filter' field as part of the query (only supported for lucene engine).

Readme file has been updated along with five sample filter definitions and example of test configuration that uses queries with filters.
Check List

[X] New functionality has been documented.
[X] Commits are signed as per the DCO using --signoff

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

Codecov Report

Merging #598 (3064f07) into main (5bb7a3f) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #598      +/-   ##
============================================
- Coverage     84.77%   84.74%   -0.03%
+ Complexity     1059     1058       -1
============================================
  Files           149      149
  Lines          4301     4301
  Branches        382      382
============================================
- Hits           3646     3645       -1
- Misses          480      481       +1
  Partials        175      175

Impacted Files
Coverage Δ

.../java/org/opensearch/knn/index/query/KNNQuery.java
77.77% <0.00%> (-5.56%)
:arrow_down:

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


Icon name
It should depict a snake curled around a rod/staff such as the ones used in pharmacies or other medical institutions
Use cases
The use-cases include:

Medical institutions such as hospitals, clinics, medical labs, and pharmacies using the symbol possibly in their websites, social media posts, and other platforms online.
It also could assist others when trying to create designs related to the medical field in general, especially hospitals, clinics, medical labs and pharmacies.
Just generally provides a better, more universally understandable symbol to represent the medical field as a whole.

Design ideas
It would look similar to font-awesome's staff-snake icon (obviously with the lucide icon style it would look way better)
Checklist

[X] I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
[X] I have searched existing icons to make sure it does not already exist and I didn't find any.
[X] I am not requesting a brand logo and the art is not protected by copyright.
[X] I am not requesting an icon that includes religious, political imagery or hate symbols.
[X] I have provided appropriate use cases for the icon(s) requested.

Open lucide studio

This is good but I feel like this would probably look better:
Open lucide studio
Or this:
Open lucide studio

All of these - including Jakob's - have guideline violations, I'm afraid.

Maybe I haven't read the guidelines carefully enough. Unfortunately I'm out rn but when I'm back I'll double-check and fix whatever is needed

Open lucide studio
Open lucide studio
Open lucide studio

Could we maybe try one that's a bit more spread out?
Leaving only the baseline minimum 2px gap everywhere feels super dense at 1x.
Open lucide studio

I think this is better but I still don't imagine it being part of a full lucide release, I feel like it needs a bit more detail but the guidelines sort of come in the way

Maybe we could use some images online for ideas as well? I've noticed the use of cup imagery as well when there's one snakes curled around the base, but when it's 2 snakes spiraling around it's usually around a rod not a cup.

Here's a screenshot I took of some search results to possibly help

Open lucide studio

Open lucide studio
I think something like this would be better


m.to_html('test.html') error

How do we export our rendered map to html?

edit:
getting the same error when trying to do it via whitetoolgui

What version are you using? It works fine my end, but ipyleaflet and folium backends.

Closing this issue for now. Feel free to reopen if needed.


Implement bundle (and maybe bind) for more than 2 scalar weighted operands

Bind and bundle are usually defined as binary operators with unweighted operands. This reflects the immensely strong mathematical preference for unary and binary operators and the fact that most multi-argument operations can be expressed as a composition of unary and binary operators (the higher-order operators being strictly redundant in this case).
In many cases the generalisation of bundle more than 2 operands is pretty obvious (and the generalisation to weighted operands is possibly less obvious). You can generally achieve the same result by composing multiple binary bundle operators, but this can be less convenient and is possibly more computationally expensive. Bundling operators are generally non-associative. That is, bundle(bundle(A,B),C) != bundle(A,bundle(B,C)). This is easy to see in randsel bundling because of the conversion of weights to sampling probabilities per application of the operator. Thus bundle.randsel(bundle.randsel(A,B),C) ~= bundle.randsel(1*A,1*B,2*C) and  bundle.randsel(A,bundle.randsel(B,C)) ~= bundle.randsel(2*A,1*B,1*C), where ~= should be interpreted as meaning preserving equal similarity relations to the operands.
bundle.randsel with k operands only needs to generate one random hypervectors of values from 1 to k to select between the k operands. Composing the equivalent operation from binary operators requires one random hypervector to be generated per binary operator, so is more computationally expensive. Also, if a k-many bundle is natural for the problem you are solving it is mildly tedious to work out the correct weights for the binary operators to get the desired weights for the k-operand operator.
The scalar weights are quite handy for constructing target hypervectors to compar with calculated hypervectors. Also, using weighted bundling is a natural way to create continuous level encodings.
There is probably less call to have a k-operand weighted binding operator because binding operators are generally associative. However, it may be the case in some problems that it is the natural form to take, so why not implement it if it's easy? For example, see https://rgayler.github.io/VSA_altitude_hold/vsa_basic_operators.html#5_Multiply_vectors

We have multibundle, mulitbind, and since #86 we also have multirandsel all of which perform their operation any number of hypervectors on the second last dimension of the provided tensor. ``multirandsel` also allows you to specify the probability with which elements from hypervectors are selected. I think this satisfies the most important aspect of this request therefore I'm closing this issue. However feel free to reopen it if you don't think all aspects have been properly addressed.


Added a LOAN prediction project using python with jupyter based on Da…

…ta Analysis
Description
A short summary of what is included in your pull request
Fixes #(issue_no)
Replace issue_no in the above line with the issue related to this PR.
Type of change
Choosing one or more options from the following as per the nature of your Pull request.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Documentation Update

Checklist:
Please tick all the boxes that are fulfilled by your Pull request

[x] I have named my files and folder according to this project's guidelines
[x] My code follows the style guidelines of this project
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have created a helpful and easy to understand README.md
[x] I have included a requirements.txt file(if external libraries are required)
[x] My changes dont produce any warnings.
[x] I have added a working sample/screenshot of the script

Added  aLoan Prediction Project

@Tomyzon1728  Please share a google colab link to your jupyter notebook so that we can review it easily and also include the dataset in it that you have used in the notebook. It is hard to review jupyter notebooks without the above things. Thanks for the contribution.

Ok will do that 👍

Predicting Loan Repayment¶
The dataset for this project is retrieved from kaggle, the home of Data Science.
The major aim of this project is to predict whether the customers will have their loan paid or not. Therefore, this is a supervised classification problem to be trained.
http://localhost:8888/notebooks/python codes/python-mini-projects/projects/LOAN/loan-prediction-problem.ipynb
Also added dataset as requested

@AdityaJ7  I've done all requested of me.

Will change the name and location right away

I've changed the name, but couldn't change location because I don't have the Notebook folder . It wasn't there when I  forked the code from @chavarera

I've changed the name, but couldn't change location because I don't have the Notebook folder . It wasn't there when I forked the code from @chavarera

Ok no problem i will add it to the folder


Hashes missmatch between DIC versions

Version
20240401
Describe the bug
When dumping Age of Empires III (Disc 1), DIC-20240401 produces an image that differs from DIC-20230606 and redumper v2024.01.08 build_311.
It looks like a possible regression, DIC-20230606 and redumper hashs are same and match the redump.org ones
Disc title
Age of Empires III (Disc 1)
Disc ringcode
Data Side Mastering Code (laser branded/etched): arvato digital services bertelsmann X14-04278 04
Data Side Mastering SID Code: IFPI L0 22
Data Side Toolstamp or Mastering Code (engraved/stamped): 1
Data Side Mould SID Code: IFPI 5805
Log file
AOEIIICD1.zip

Here the logs for DIC-20230606
AOEIIICD1-20230606.zip

Thanks. Uploaded test version.
DiscImageCreator_test.zip

Look like the issue is solved, the test version produces the same hash as redumper and the one register in redump.org