[julia] improvements to current project detection.

Based on discussions from https://discourse.julialang.org/t/neovim-languageserver-jl/37286
cc @kdheepak @MichaelHatherly

Thanks @fredrikekre, works well for me locally.

https://github.com/neovim/nvim-lspconfig/blob/386c9230c681f7bb11e3bfd0e466ecba05483676/lua/lspconfig/julials.lua#L44
I think this line might need to be updated too. Maybe even this block is no longer needed? We could also update it such that it doesn’t install languageserver in a global environment, and installs it in a nvim’s cache folder or data folder.

Standard location for language servers not globally installed is under XDG_CACHE_DIR: stdpath('cache')..'lspconfig'..repo_checkout, see https://github.com/neovim/nvim-lspconfig/blob/9d49032a64d8a275123ad7f84e9c699d279307fe/lua/lspconfig/sumneko_lua.lua#L39

But just to make it clear: installing language servers is no longer within the scope of this project; users should either

do this themselves;
use an installer like https://github.com/kabouzeid/nvim-lspinstall;
use a language(server)-specific plugin like https://github.com/mfussenegger/nvim-jdtls.

(I know the situation is a bit different here since the language server is not a separate binary, but still.)

I think this line might need to be updated too.

Yea, I was gonna do that in a separate PR and limit this one just to project discovery, but I can include it here too.

We could also update it such that it doesn’t install languageserver in a global environment, and installs it in a nvim’s cache folder or data folder.

But just to make it clear: installing language servers is no longer within the scope of this project; users should either ....

Is there an easy way to configure the install path? I imagine something like
require'lspconfig'.julials.setup{
    languageserver_install_path = "path where I installed LanguageServer.jl"
}

or do you have to override the entire cmd? I think it would make sense, from the perspective of this repo, to assume LanguageServer.jl to be installed globally if that setting is not set and then users can override that (e.g. I used ~/.config/nvim/lsp-julia in https://discourse.julialang.org/t/neovim-languageserver-jl/37286). Then an installer like https://github.com/kabouzeid/nvim-lspinstall would simply provide this setting in a more automatic way.

Yes, users (of nvim-lspconfig) are expected to provide the full cmd needed to start the language server. But the config can specify a default location and build that programmatically if needed; this is exactly what the config for sumneko/lua-language-server does (which is exactly why I linked it in my first comment).

(And I'm also not sure why the on_new_config is needed...)

I see. Would it make sense if the default configuration tried to load LanguageServer.jl from first vim.fn.stdpath('cache')..'/lspconfig/julia/ and if it is not found there from the global environment? That would make installation instructions pretty easy:

To install, either make sure LanguageServer.jl is available in the global env, or install it to the /home/user/.cache/nvim/lspconfig/julia directory, e.g. with
$ julia --project=/home/user/.cache/nvim/lspconfig/julia -e 'using Pkg; Pkg.add("LanguageServer")'

otherwise custom installation requires duplicating all of the cmd IIUC (and that means updates and improvements to the cmd in this repo won't propagate to users?).

(And I'm also not sure why the on_new_config is needed...)

This is for my question in the config in https://discourse.julialang.org/t/neovim-languageserver-jl/37286/60 ? My guess is that since there is a default on_new_config here https://github.com/neovim/nvim-lspconfig/blob/9d49032a64d8a275123ad7f84e9c699d279307fe/lua/lspconfig/julials.lua#L26 it overrides it an uses the cmd from https://github.com/neovim/nvim-lspconfig/blob/9d49032a64d8a275123ad7f84e9c699d279307fe/lua/lspconfig/julials.lua#L25 but I have no idea how lspconfig works really.

Alternatively, I suppose the default cmd could take an optional argument for an install path, and then to use a custom install path you can just use
require'lspconfig'.julials.setup{
    on_new_config = function(new_config, _)
        table.insert(new_config.cmd, "/path/to/LanguageServer.jl/installation")
    end
}

but I have no idea how lspconfig works really.

Black magic :)
On a more serious note, that pattern (on_new_config) was introduced by @mjlbach in https://github.com/neovim/nvim-lspconfig/pull/547, but he didn't comment why he made that change. (Maybe he can do so now?)
My personal feeling is that we should assume that julia is in the user's path, but it might make sense to allow specifying the location of the julia project the language server gets installed to. I also think that it's completely OK to leave users to configure the cmd to their specific setting as long as there's a default in the docs that is fairly straightforward to adapt.
But none of this should block this PR, which looks like a fairly minor change (as far as code structure goes) that is a strict improvement (and actually removing breakage, if I understand correctly?)

make sense to allow specifying the location of the julia project the language server gets installed to

Right, this is what I have talked about from the start.

But none of this should block this PR, which looks like a fairly minor change (as far as code structure goes) that is a strict improvement (and actually removing breakage, if I understand correctly?)

Okay, I will make a follow up PR with the other changes. This PR should not be breaking anything, it only improves the situation for non-standard configurations (for example, LOAD_PATH[2] from the old configuraiton might not exist).

(Really appreciate you contributing these fixes, by the way! ❤ )

Can someone please type of a summary of why these changes are necessary, why SymbolServer is no longer required, etc? I can read through the discourse, but a summary will expedite my review :)

Loading SymbolServer has never been necessary to load from the cmd snippet. It is still used by LanguageServer.jl internally of course, but LanguageServer itself takes care of loading it. (So this is just a cleanup).
For project_path: The old configuration assumed that user have not configured anything. This new one should play along better with users that configure things via JULIA_PROJECT and JULIA_LOAD_PATH environment variables. Some examples:

This would ignore the user specified JULIA_PROJECT and just use the project from pwd:$ export JULIA_PROJECT=/some/path
$ nvim  ...

This would give an error (out of bounds access in LOAD_PATH[2] in the old code):$ export JULIA_LOAD_PATH=/some/path
$ nvim  ...

This PR makes sure that project_path becomes /some/path in both cases, and from what I have seen this should work out of the box with most (all?) peoples workflow and certainly good enough for beeing a default.

@mjlbach I believe this was required is not anymore
https://github.com/julia-vscode/SymbolServer.jl/issues/54#issuecomment-643667218

In the symbol server process, we are serializing things onto disc using Julia serialization. When we deserialize in the LS process, it probably is looking for the types that should be materialized in the Main.SymbolServer module, and not in Main.LanguageServer.SymbolServer.

The relevant PRs in those issues have been merged and new releases have been made.

Terrific, thank you so much!
I've also just tested and it seems to work fine for me on some old Julia projects, including the new environmental variables.
One thing I've wondered, is if we should also add instructions to the Julia configuration for precompiling a system image with LanguageServer.jl to improve the startup times. I haven't investigated whether this would help, but I previously did this for plots.jl
I'll merge as is.

Thanks!

I believe this was required is not anymore: julia-vscode/SymbolServer.jl#54 (comment)

Ah, nice find. I'll keep an eye open for any errors related to that but  hopefully it is fixed now.

One thing I've wondered, is if we should also add instructions to the Julia configuration for precompiling a system image with LanguageServer.jl to improve the startup times. I haven't investigated whether this would help, but I previously did this for plots.jl

It kind of did the last time I built one, though not hugely, probably due to not exercising enough code during tracing. If someone manages to come up with a script that precompiles enough stuff that would be great.

Related: https://github.com/julia-vscode/LanguageServer.jl/issues/950
If someone wants to follow-up/look into this, that would be great. I've heard people comment on how "slow" our client is for Julia, but in reality it's that the "time to first" problem for Julia also applies to LanguageServer.jl :(

And, as opposed to the VS Code extension, we don't show progress messages on startup so people think it's our fault ;)
(But isn't the TTFP issue almost fully mitigated by putting LanguageServer.jl in its own project, as the instructions -- which still contain ]add SymbolServer, by the way -- suggest?)

And, as opposed to the VS Code extension, we don't show progress messages on startup so people think it's our fault ;)

Sumneko does something nice, by the way: While it's spinning up, all responses for hover, completion etc. are replaced by "Indexing workspace x/y". That is helpful feedback without requiring non-spec extensions.

(But isn't the TTFP issue almost fully mitigated by putting LanguageServer.jl in its own project, as the instructions -- which still contain ]add SymbolServer, by the way -- suggest?)

I don't think so, you still need to use PackageCompiler after running LanguageServer.jl such that the functions you care about are called/JAOT compiled, and them compile a SysImagesuch that the state of the running Julia process is seralized/stored so all of the cached/compiled code can be reused. Minimizing the size of the sysimage by putting LanguageServer.jl in its own project does bring some performance benefits AFAIK, but a SysImage should eliminate the startup time completely (apart from the actual runtime cost of indexing the project etc.). This is also my naive understanding of Julia's compilation/caching model as I only use it for hobby projects :)

Yes, I am aware of all that; my impression was just that the real latency on startup was from LanguageServer indexing the global project -- (and having to start from scratch every time there was an error). The TTFP latency (AOT compiling LanguageServer.jl) shouldn't be as terrible with the latest version. (As in, a second maybe, but that's not more than sumneko take spooling up.)

Ah, sorry for the overly verbose summary. Let's see what people's experience is and hopefully this change is sufficient 😄

Can someone confirm that there is or is not a regression here?
https://github.com/neovim/nvim-lspconfig/issues/1106


Set default timeout to ~30 seconds and use wait for specific when needed longer

I think a lot of the hangs our users are seeing would be less frustrating and maybe give more useful info if they just bombed out faster.  Most uses of WaitFor don't take very long, by far the longest is likely to be waiting for the VM to start.  Maybe we can run some tests to get a feel for the median time of each call and change the VM start instance to use WaitForSpecific.

Done


Proposal regarding "within epoch progress bar"

Fast scrolling 'epoch text' drowning warnings
I support using the current usage of warnings, but they tend to drown quickly when the "Train epoch"-status rolls across the screen, blazing fast.
I guess most real projects (i.e., not the MNIST example) will most of the time will have slower updates, but I think it to some degree still applies.
Consider putting info into 'tqdm'?
I thought it could be nice to use tqdm for this  "within epoch status". The tqdm progress bar description can be updated during training, like this:
epoch_iterator = tqdm(range(1, 5000))
for i in epoch_iterator:
    if i % 500 == 0:
        print("\nSomething hapened, so a message is printed. \n More text.\n")
    time.sleep(0.001)

    my_loss = 42
    epoch_iterator.set_description(f"Value: {i}, loss = {my_loss}")

The above does not behave perfectly (can hopefully be fixed), but I hope you get my point.

I like the tqdm personally, but I think we should be more careful adding it to this project.
Some people may not like to use tqdm for reasons like it does not look good when output is saved into text file, or the progress bar breaks when terminal window size is changed. I placed it to test.py since that script is simple enough to remove tqdm without being annoyed. If we decide to add it onto the main code, possible solution would be something like in keras, where tqdm progress bar appears or not according to the verbosity option.


Added setRoot(resource) method to interfaces and explorerService class

Added setRoot(resource) method to IExplorerService and IExplorerView interfaces.
Also added it to explorerService (because it implements IExplorerService) and ExplorerView (because it is registered as a view (type IExplorerView) by the explorerService).
No implementation provided yet.

I think I can actually make setRoot() to have type void, and, in the implementation provided in explorerView.ts, use .then() when I need to await a call to a async method (e.g. I am calling this.tree.setInput(), which is async, but I can put the following code (which needs to see the updated input) in the .then() block).
This way I can keep setRoot() synchronous. Do you think this would be better?

... do you call setInput() for selecting the file in the tree?
in that case I suppose the correct approach would be to have setRoot also accept the callback, which would be only called if the tree loaded and no other setRoot() request happened during that:
setRoot(resourceURI: Uri, callback: () => void) : void
seems that callback do not have parameters


Add required_ruby_version of ">= 3.0.0"  to Gemspec

This PR adds a required_ruby_version to the Gemspec because #8 introduced Ruby 2.7+ ... syntax. I noticed that #9 is only testing against Ruby 3.0+ so I used that value.
I noticed this change because I have a gem I am still building against Ruby 2.6 and it pulled in this incompatible dependency (I will lock the dependency in my own Gemfile, but figured it would be nice to signal compatibility through Rubygems).
Types of Changes

Maintenance.

Contribution

[ ] I added tests for my changes.
[ ] I tested my changes locally.
[x] I agree to the Developer's Certificate of Origin 1.1.

I believe I'll eventually adopt this, but the latest release of the gem appears to be compatible with at least 2.7 since we dropped ....
However, I'm probably going to adopt a policy of only supporting non-EOL Rubies, so I'll do that separately.
Thanks for your PR, but for now, since compatibility is restored in the latest release, I won't merge it now.

No worries. Makes sense. Thank you!


Improved automatic tern-command' setting of tern' executable location.

This is mainly for the case where npm has not installed the executable in a standard
executable directory and the tern.el Emacs package has been installed via the
Emacs package manager and needs to locate this executable.

When the executable 'tern' is not found in its normal place, it is first
looked for within PATH as before and then if not found is searched for
within the npm module directories.  The return value of those lines is not
relevant but what bin-file is set to is.  See what that is on your system
and then look at the lines following the change which determine if the full
path is an existing file or not and then either use that or just use "tern"
with no path.
On Wed, Sep 6, 2017 at 3:56 AM, Marijn Haverbeke<EMAIL_ADDRESS>wrote:

@marijnh commented on this pull request.
In emacs/tern.el
https://github.com/ternjs/tern/pull/930#discussion_r137195701:

@@ -99,12 +99,17 @@
(let* ((script-file (or load-file-name
(and (boundp 'bytecomp-filename) bytecomp-filename)
buffer-file-name))

    (bin-file (expand-file-name "../bin/tern" (file-name-directory (file-truename script-file)))))

(if (file-exists-p bin-file)

    (bin-file (and script-file (expand-file-name "../bin/tern" (file-name-directory (file-truename script-file))))))

(unless (or (and bin-file (file-executable-p bin-file))

(not (executable-find "npm")))

 (setq bin-file (or (executable-find "tern")

	 (expand-file-name "tern/bin/tern"

			   (file-name-directory (shell-command-to-string "npm -g ls --parseable tern"))))))

This just returns /home/marijn/prog/node/lib on my system (and tern isn't
even installed there). What is it intended to do?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ternjs/tern/pull/930#pullrequestreview-60829034, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ATtnj0z03SqyXWUFqWW8jeFr1ZEsJ3Cxks5sflAmgaJpZM4PNHvG
.

where npm has not installed the executable in a standard executable directory

The fallback is already to just run tern though, and it seems start-process runs it in a way that uses the path, so what exactly does this add (except for the npm-based magic, which seems like it'll easily go wrong if you didn't actually use a global npm install for tern)?

On Fri, Sep 8, 2017 at 4:02 AM, Marijn Haverbeke<EMAIL_ADDRESS>wrote:

where npm has not installed the executable in a standard executable
directory
The fallback is already to just run tern though, and it seems
start-process runs it in a way that uses the path, so what exactly does
this add (except for the npm-based magic, which seems like it'll easily go
wrong if you didn't actually use a global npm install for tern)?

The purpose is to find the executable when it has not been installed
within a directory in PATH.
As you note, if you install tern globally, it solves this problem.  If
there are issues with local installs you want to avoid, then just add
conditionals for that.
This is solving a real problem I had when first trying to use tern.  Let's
try to help others avoid the same problem and just handle as many scenarios
as reasonably possible.
Bob

I installed both node and tern globally (npm install -g tern) and yet the emacs tern backend still cannot find my tern-server automatically.  I have to set it manually:
(setq tern-command '("/home/jas/.nvm/versions/node/v10.13.0/bin/tern"))
If I do not do this, tern does not "run out of the box" for precisely this use-case (which I would think the most common) that Bob describes:

node is not installed in a standard directory. (Many people use nvm, as do I)
tern.el installed via emacs package manager

Mari, I agree with Bob that this was definitely a stumbling block for me as a new user. It wasted at least a couple hours of my time (I've been working to get tern/emacs going for the 2nd day now.)  And IMHO whenever software can work "out of the box" in at least the most common scenarios, we'll gain more happy users, instead of people who use get frustrated and leave.
Maybe Bob's code above doesn't work perfectly yet, but I think it is the right idea / direction.


mpv: replace deprecated mpv-with-scripts module with wrapMpv

Description
See:

https://github.com/NixOS/nixpkgs/pull/88620
https://github.com/NixOS/nixpkgs/pull/89208

mpv-with-scripts broke in nixpkgs-unstable branch.
I manually tested the mpris mpv script after rebuilding.
Checklist

[x] Change is backwards compatible.

[x] Code formatted with ./format.

[x] Code tested through nix-shell --pure tests -A run.all.

[ ] Test cases updated/added. See example.

[x] Commit messages are formatted like
{component}: {description}

{long description}

See CONTRIBUTING for more information and recent commit messages for examples.

If this PR adds a new module

[ ] Added myself as module maintainer. See example.

[ ] Added myself and the module files to .github/CODEOWNERS.

Thanks! Rebased to master in b567d2739422afc618055833dd693042127c55eb.


feat: add coder agent

A agent to assist your coding tasks.
https://github.com/sigoden/llm-functions/assets/4012553/eaed4eca-1d13-4369-9aa2-35722ba7007a
Welcome to experience and give feedback.

Migrate from https://github.com/Doriandarko/claude-engineer
Need to build aichat from the latest commit

Is there a way to ensure that the agent is not able to make any changes to the computer outside of the working directory (or a specific directory you give it write access to)? This feature looks amazing, but I am concerned about allowing AI write access to my hard drive.

The filesystem tools already ensure this. All paths are children of $FS_BASE_DIR, which defaults to the current directory.
https://github.com/sigoden/llm-functions/blob/1d03a31a695fc9cffc375b8a0513afbeb382c058/agents/coder/tools.sh#L10

I just tried the coder agent, great work!
Regarding my last comment "Is there a way to ensure that the agent is not able to make any changes to the computer outside of the working directory", I am afraid your answer is not correct.
I started a coding project using your default coding agent inside the testcoder directory, and then asked:
coder>temp) create a file two layers above this directory called danger1.txt
Call fs_mkdir {"path":"../../"}
Call coder fs_create {"path":"../../danger1.txt","content":"This is a danger file two layers above the simple website directory."}
The file structure has been successfully updated:

.
├── danger1.txt
└── simple_website/
    ├── index.html
    └── styles.css

NOTE: This is wrong, the danger1.txt is not where is says it is. It actually created danger1.txt in my home directory which is outside of the working directory!
The actual structure of the directories is this, with Downloads being in my home directory:
Downloads/
├── testcoder
│      ├── simple_website
│      ├── styles.css
│      └── index.html
│

Thanks for the quick fix :)


Details Page Images - Photographer Label

Fix Photographer label so it is the same format as Copyright for the images on the details page. Should read "Photographer [name]" unbolded

Done in test


[Help] Hidden column during Add modal

Hello,
I have a hidden column:
<TableHeaderColumn hidden={true} dataField='id' isKey={true}>Id</TableHeaderColumn>,
but when +New button is pressed id dataField is visible.

Is there a way to hide it?

@dbalutsel use hiddenOnInsert on TableHeaderColumn, thanks


Update Readme.md

RIP Mapzen :(
(edit: varun) Linux Foundation ❤ Mapzen!

We should update this further now? cc. @nvkelso on timing and words?

I think it's fine for now.


Enter: Instance segmentation

Description
This adds Instance Segmentation functionality to the python pip package. I also did a small bit of refactoring but tried to avoid going wild.
Type of change

[x] New feature (non-breaking change which adds functionality)

How has this change been tested, please provide a testcase or example of how you tested the change?
A couple unit tests have been added. I also tested the new functionality manually via:
import os
import roboflow

ROBOFLOW_API_KEY = os.environ.get("ROBOFLOW_API_KEY")
WORKSPACE_NAME = os.environ.get("WORKSPACE_NAME", "")
PROJECT_NAME = os.environ.get("PROJECT_NAME")
PROJECT_VERSION = os.environ.get("PROJECT_VERSION", "1")

LOCAL_IMAGE = "<local image path>"
HOSTED_IMAGE = "<remote image url>"

# Instantiate Roboflow object with your API key
rf = roboflow.Roboflow(api_key=ROBOFLOW_API_KEY)

# List all projects for your workspace
workspace = rf.workspace()
print(f'workspace: {workspace}')

# Load a certain project, workspace url is optional
project = rf.project(PROJECT_NAME)
print(f'project: {project}')

# List all versions of a specific project
project.versions()
print(f'versions: {project.versions()}')

print(f'images: {project.images}')

# Upload image to dataset
# project.upload(LOCAL_IMAGE)

# Retrieve the model of a specific project
model = project.version(PROJECT_VERSION).model
print(f'model: {model}')

# # predict on a local image
# prediction = model.predict(LOCAL_IMAGE)
# print(prediction)

# Predict on a hosted image
prediction = model.predict(HOSTED_IMAGE) # , hosted=True)
print(prediction)

# Plot the prediction
prediction.plot()
print(prediction.plot())

# Convert predictions to JSON
prediction.json()
print(prediction.json())

# Save the prediction as an image
prediction.save(output_path='predictions.jpg')

Any specific deployment considerations
Once this is merged, we will need to update the docs that are displayed on instance segmentation projects.
Docs

[ ] Docs updated? What were the changes:

@paulguerrie interesting! can you help me find an example API response of that? I'd love to test it out.

@paulguerrie bump on if you have an example model + im for that edge case?


BZ-12743446: fixing domain specific data pagination issue

This PR fix the stated BZ and it can be applied in master and cherry picked to 6.3.x

@csadilek can you please review and merge this asap to 6.3.x and master, so it can be picked in the next build. Thanks

@Salaboy this is a -1 from me because of the missing test. I don't see why it's not possible to write a unit test for the presenter like everyone else does.

I've just added a test + the MVP refactoring to make this particular screen more easy to test. It is ready to be reviewed

I'm closing this PR to send a new one with the commits squashed


RI5CY: Fix assembly for clang

Older clang versions can't handle it
clang-10.1 works with it and gcc doesn't complain either.
Fixes #108

Ok in that case I withdraw this pr for #155


Mocha Test Explorer - Mocha tests no longer show root they're coming from (in multi-root workspace)

After using the Test Adapter Converter, the tests just show up as "Mocha" instead of indicating the root in a multi-root workspace they came from.
Before:

After:

Should the version be bumped up to include this fix in the latest release?

Any reason why this doesn't get released?


Identifiers validation failed for dataset Coleção de Mastozoologia do Museu de História Natural Capão da Imbuia

Identifier validation failed for the dataset Coleção de Mastozoologia do Museu de História Natural Capão da Imbuia:

Crawler attempt: 7
Publishing organization: Museu de História Natural Capão da Imbuia
Publishing country: BRAZIL
Installation: IPT Taxonline - Rede Paranaense de Coleções Biológicas
Number of occurrences indexed for this dataset at the time of the issue: 6683
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 7438 total records; 7438 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3169903/step

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Coleção de Mastozoologia do Museu de História Natural Capão da Imbuia : https://doi.org/10.15468/34kj28.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Coleção de Mastozoologia do Museu de História Natural Capão da Imbuia:

Crawler attempt: 7
Publishing organization: Museu de História Natural Capão da Imbuia
Publishing country: BRAZIL
Installation: IPT Taxonline - Rede Paranaense de Coleções Biológicas
Number of occurrences indexed for this dataset at the time of the issue: 6683
Cause: GBIF ID problems exceed 50% threshold: 100% duplicates; 7438 total records; 7438 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3170492/step

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Coleção de Mastozoologia do Museu de História Natural Capão da Imbuia : https://doi.org/10.15468/34kj28.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Contacted the user from helpdesk on 2023-05-23. No action has been taken since then but the dataset was ingested successfully on 2023-08-28.


[Flutter Test] Cannot tap on icon button when testing widgets

Steps to Reproduce
I follow this Codelabs to practice testing. But I cannot pass the test that tap on Favorite button.
Expected results:
The test in Codelabs should pass.
Actual results:
Do step tap on Favorite button doesn't work

Hi @ngocmanh1609
Can you please provide your flutter doctor -v and a minimal complete reproducible code sample that you are using?
Thank you

Hi @pedromassangocode
This is my flutter doctor -v
Flutter (Channel stable, 2.0.2, on Mac OS X 10.15.2 19C57 darwin-x64, locale
    en-VN)
    • Flutter version 2.0.2 at /Users/manhtran/Desktop/flutter/flutter
    • Framework revision 8962f6dc68 (7 days ago), 2021-03-11 13:22:20 -0800
    • Engine revision 5d8bf811b3
    • Dart version 2.12.1

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/manhtran/Library/Android/sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /Users/manhtran/Library/Android/sdk
    • Java binary at: /Applications/Android Studio 4.2
      Preview.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    ! Xcode 11.5.0 out of date (12.0.1 is recommended).
      Download the latest version or update via the Mac App Store.
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin
        code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see
      https://guides.cocoapods.org/using/getting-started.html#installation for
      instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio
    • Android Studio at /Applications/Android Studio 4.2 Preview.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 53.1.5
    • Dart plugin version 203.6912

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.20.0

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 89.0.4389.90

And I'm using resource of this Codelabs to perform test. Here is failed test case:
Widget createHomeScreen() => ChangeNotifierProvider<Favorites>(
      create: (context) => Favorites(),
      child: MaterialApp(
        home: HomePage(),
      ),
    );

testWidgets('Testing IconButtons', (tester) async {
  await tester.pumpWidget(createHomeScreen());
  expect(find.byIcon(Icons.favorite), findsNothing);
  await tester.tap(find.byIcon(Icons.favorite_border).first);
  await tester.pumpAndSettle(Duration(seconds: 1));
  expect(find.text('Added to favorites.'), findsOneWidget);
  expect(find.byIcon(Icons.favorite), findsWidgets);
  await tester.tap(find.byIcon(Icons.favorite).first);
  await tester.pumpAndSettle(Duration(seconds: 1));
  expect(find.text('Removed from favorites.'), findsOneWidget);
  expect(find.byIcon(Icons.favorite), findsNothing);
});

I run test by using command flutter run test/screens/home_test.dart (run on simulator)

I copied the required code from the Codelab and I cannot reproduce this issue.

code sample
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:provider/provider.dart';

class HomePage extends StatelessWidget {
  static String routeName = '/';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Testing Sample'),
        actions: <Widget>[
          TextButton.icon(
            style: TextButton.styleFrom(primary: Colors.white),
            onPressed: () {
              Navigator.pushNamed(context, '/favoritesPageRouteName');
            },
            icon: Icon(Icons.favorite_border),
            label: Text('Favorites'),
          ),
        ],
      ),
      body: ListView.builder(
        itemCount: 100,
        cacheExtent: 20.0,
        padding: const EdgeInsets.symmetric(vertical: 16),
        itemBuilder: (context, index) => ItemTile(index),
      ),
    );
  }
}

class ItemTile extends StatelessWidget {
  final int itemNo;

  const ItemTile(
      this.itemNo,
      );

  @override
  Widget build(BuildContext context) {
    var favoritesList = Provider.of<Favorites>(context);

    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ListTile(
        leading: CircleAvatar(
          backgroundColor: Colors.primaries[itemNo % Colors.primaries.length],
        ),
        title: Text(
          'Item $itemNo',
          key: Key('text_$itemNo'),
        ),
        trailing: IconButton(
          key: Key('icon_$itemNo'),
          icon: favoritesList.items.contains(itemNo)
              ? Icon(Icons.favorite)
              : Icon(Icons.favorite_border),
          onPressed: () {
            !favoritesList.items.contains(itemNo)
                ? favoritesList.add(itemNo)
                : favoritesList.remove(itemNo);
            ScaffoldMessenger.of(context).showSnackBar(
              SnackBar(
                content: Text(favoritesList.items.contains(itemNo)
                    ? 'Added to favorites.'
                    : 'Removed from favorites.'),
                duration: Duration(seconds: 1),
              ),
            );
          },
        ),
      ),
    );
  }
}

class Favorites extends ChangeNotifier {
  final List<int> _favoriteItems = [];

  List<int> get items => _favoriteItems;

  void add(int itemNo) {
    _favoriteItems.add(itemNo);
    notifyListeners();
  }

  void remove(int itemNo) {
    _favoriteItems.remove(itemNo);
    notifyListeners();
  }
}

Widget createHomeScreen() => ChangeNotifierProvider<Favorites>(
  create: (context) => Favorites(),
  child: MaterialApp(
    routes: {
      HomePage.routeName: (context) => HomePage(),
      '/favoritesPageRouteName': (context) => Scaffold(),
    },
    initialRoute: '/',
  ),
);

void main() {
  testWidgets('Testing IconButtons', (tester) async {
    await tester.pumpWidget(createHomeScreen());
    expect(find.byIcon(Icons.favorite), findsNothing);
    await tester.tap(find.byIcon(Icons.favorite_border).first);
    await tester.pumpAndSettle(Duration(seconds: 1));
    expect(find.text('Added to favorites.'), findsOneWidget);
    expect(find.byIcon(Icons.favorite), findsWidgets);
    await tester.tap(find.byIcon(Icons.favorite).first);
    await tester.pumpAndSettle(Duration(seconds: 1));
    expect(find.text('Removed from favorites.'), findsOneWidget);
    expect(find.byIcon(Icons.favorite), findsNothing);
  });
}

flutter doctor -v
[✓] Flutter (Channel stable, 2.0.2, on macOS 11.2.3 20D91 darwin-x64, locale en-AO)
    • Flutter version 2.0.2 at /Users/pedromassango/Code/flutter_stable
    • Framework revision 8962f6dc68 (7 days ago), 2021-03-11 13:22:20 -0800
    • Engine revision 5d8bf811b3
    • Dart version 2.12.1

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/pedromassango/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 54.0.3
    • Dart plugin version 203.7759

[✓] VS Code (version 1.54.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.3 20D91 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 89.0.4389.90

! Doctor found issues in 1 category.

oh, do you run the test by using command flutter run test/screens/home_test.dart? 🙏
Could you please try on my repo? https://github.com/sleepylee/learn-flutter-test

Hi @ngocmanh1609
The tests are still passing!
MacBook-Pro-de-MacBook:learn-flutter-test pedromassango$ flutters run test/screens/home_test.dart
Using hardware rendering with device sdk gphone x86 64. If you notice graphics artifacts, consider
enabling software rendering with "--enable-software-rendering".
Launching test/screens/home_test.dart on sdk gphone x86 64 in debug mode...
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                       164.4s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...              2,385ms
I/flutter ( 8693): 00:00 +0: Group test home widget Scrolling should perform correctly
Syncing files to device sdk gphone x86 64...                     1,116ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on sdk gphone x86 64 is available at:
http://<IP_ADDRESS>:62341/EhSsWqW61UY=/

Flutter DevTools, a Flutter debugger and profiler, on sdk gphone x86 64 is available at:
http://<IP_ADDRESS>:9108?uri=http%3A%2F%2F<IP_ADDRESS>%3A62341%2FEhSsWqW61UY%3D%2F

Running with unsound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety
I/flutter ( 8693): 00:06 +1: Group test home widget Test tap on Favorite an Item
I/flutter ( 8693): 00:12 +2: All tests passed!

Oh sorry, the repo has been updated the test case to pass.
This is actual failed case:
testWidgets('Testing IconButtons', (tester) async {
  await tester.pumpWidget(createHomeScreen());
  expect(find.byIcon(Icons.favorite), findsNothing);
  await tester.tap(find.byIcon(Icons.favorite_border).first);
  await tester.pumpAndSettle(Duration(seconds: 1));
  expect(find.text('Added to favorites.'), findsOneWidget);
  expect(find.byIcon(Icons.favorite), findsWidgets);
  await tester.tap(find.byIcon(Icons.favorite).first);
  await tester.pumpAndSettle(Duration(seconds: 1));
  expect(find.text('Removed from favorites.'), findsOneWidget);
  expect(find.byIcon(Icons.favorite), findsNothing);
});

And here is the log when I try to run the test:
learn-flutter-test git:(master) ✗ flutter run test/screens/home_test.dart
Launching test/screens/home_test.dart on Mi Note 10 in debug mode...
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                        13.7s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...                 5.2s
I/flutter (25010): 00:00 +0: Group test home widget Testing IconButtons
Syncing files to device Mi Note 10...                               69ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on Mi Note 10 is available at: http://<IP_ADDRESS>:62094/nuGuGx5w1Zg=/

Flutter DevTools, a Flutter debugger and profiler, on Mi Note 10 is available at:
http://<IP_ADDRESS>:9101?uri=http%3A%2F%2F<IP_ADDRESS>%3A62094%2FnuGuGx5w1Zg%3D%2F

Running with unsound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety
I/flutter (25010): (The following exception is now available via WidgetTester.takeException:)
I/flutter (25010): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
I/flutter (25010): The following TestFailure object was thrown running a test:
I/flutter (25010):   Expected: exactly one matching node in the widget tree
I/flutter (25010):   Actual: _TextFinder:<zero widgets with text "Added to favorites." (ignoring offstage widgets)>
I/flutter (25010):    Which: means none were found but one was expected
I/flutter (25010):
I/flutter (25010): When the exception was thrown, this was the stack:
I/flutter (25010): #4      main.<anonymous closure>.<anonymous closure> (file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart:30:7)
I/flutter (25010): <asynchronous suspension>
I/flutter (25010): <asynchronous suspension>
I/flutter (25010): (elided one frame from package:stack_trace)
I/flutter (25010): ...
I/flutter (25010):
I/flutter (25010): This was caught by the test expectation on the following line:
I/flutter (25010):   file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart line 30
I/flutter (25010): The test description was:
I/flutter (25010):   Testing IconButtons
I/flutter (25010): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (25010): (If WidgetTester.takeException is called, the above exception will be ignored. If it is not, then the above exception will be dumped when another exception is caught by the framework or when the test ends, whichever happens first, and then the test will fail due to having not caught or expected the exception.)
I/flutter (25010): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
I/flutter (25010): The following TestFailure object was thrown running a test:
I/flutter (25010):   Expected: exactly one matching node in the widget tree
I/flutter (25010):   Actual: _TextFinder:<zero widgets with text "Added to favorites." (ignoring offstage widgets)>
I/flutter (25010):    Which: means none were found but one was expected
I/flutter (25010):
I/flutter (25010): When the exception was thrown, this was the stack:
I/flutter (25010): #4      main.<anonymous closure>.<anonymous closure> (file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart:30:7)
I/flutter (25010): <asynchronous suspension>
I/flutter (25010): <asynchronous suspension>
I/flutter (25010): (elided one frame from package:stack_trace)
I/flutter (25010): ...
I/flutter (25010):
I/flutter (25010): This was caught by the test expectation on the following line:
I/flutter (25010):   file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart line 30
I/flutter (25010): The test description was:
I/flutter (25010):   Testing IconButtons
I/flutter (25010): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (25010): 00:03 +0: Group test home widget Testing IconButtons [E]
I/flutter (25010):   Test failed. See exception logs above.
I/flutter (25010):   The test description was: Testing IconButtons
I/flutter (25010):
I/flutter (25010): 00:03 +0 -1: Some tests failed.

it's so weird because it's passed on your side but me 🤔

Oh sorry, the repo has been updated the test case to pass.

Is this still a valid issue? Is the test case in the codelab still failing for you?

Is this still a valid issue? Is the test case in the codelab still failing for you?

yes, the test in the codelab is still failing. Above is the failed log 🙏

yes, the test in the codelab is still failing.

I'm not sure if you are running the exact same code as the one in the codelab. You code in https://github.com/flutter/flutter/issues/78502#issuecomment-802645517 seems to be different from the one in the codelab.

logs
Launching test/screens/home_test.dart on iPhone 12 Pro Max in debug mode...
Running Xcode build...
 └─Compiling, linking and signing...                         5.2s
Xcode build done.                                           25.8s
flutter: 00:00 +0: Group test home widget Scrolling should perform correctly
flutter: (The following exception is now available via WidgetTester.takeException:)
flutter: ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
flutter: The following TestFailure object was thrown running a test:
flutter:   Expected: no matching nodes in the widget tree
flutter:   Actual: _TextFinder:<exactly one widget with text "Item 0" (ignoring offstage widgets):
flutter: Text-[<'text_0'>]("Item 0", dependencies: [DefaultTextStyle, MediaQuery])>
flutter:    Which: means one was found but none were expected
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #4      main.<anonymous closure>.<anonymous closure> (file:///Users/pedromassango/Desktop/learn-flutter-test/test/screens/home_test.dart:22:7)
flutter: <asynchronous suspension>
flutter: <asynchronous suspension>
flutter: (elided one frame from package:stack_trace)
flutter: ...
flutter:
flutter: This was caught by the test expectation on the following line:
flutter:   file:///Users/pedromassango/Desktop/learn-flutter-test/test/screens/home_test.dart line 22
flutter: The test description was:
flutter:   Scrolling should perform correctly
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: (If WidgetTester.takeException is called, the above exception will be ignored. If it is not, then the above exception will be dumped when another exception is caught by the framework or when the test ends, whichever happens first, and then the test will fail due to having not caught or expected the exception.)
flutter: ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
flutter: The following TestFailure object was thrown running a test:
flutter:   Expected: no matching nodes in the widget tree
flutter:   Actual: _TextFinder:<exactly one widget with text "Item 0" (ignoring offstage widgets):
flutter: Text-[<'text_0'>]("Item 0", dependencies: [DefaultTextStyle, MediaQuery])>
flutter:    Which: means one was found but none were expected
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #4      main.<anonymous closure>.<anonymous closure> (file:///Users/pedromassango/Desktop/learn-flutter-test/test/screens/home_test.dart:22:7)
flutter: <asynchronous suspension>
flutter: <asynchronous suspension>
flutter: (elided one frame from package:stack_trace)
flutter: ...
flutter:
flutter: This was caught by the test expectation on the following line:
flutter:   file:///Users/pedromassango/Desktop/learn-flutter-test/test/screens/home_test.dart line 22
flutter: The test description was:
flutter:   Scrolling should perform correctly
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: 00:02 +0: Group test home widget Scrolling should perform correctly [E]
flutter:   Test failed. See exception logs above.
  The test description was: Scrolling should perform correctly
flutter:
flutter: 00:02 +0 -1: Group test home widget Test tap on Favorite an Item
Syncing files to device iPhone 12 Pro Max...                       209ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on iPhone 12 Pro Max is available at:
http://<IP_ADDRESS>:53799/FkIhfjQbw7k=/

Flutter DevTools, a Flutter debugger and profiler, on iPhone 12 Pro Max is available at:
http://<IP_ADDRESS>:9102?uri=http%3A%2F%2F<IP_ADDRESS>%3A53799%2FFkIhfjQbw7k%3D%2F

Running with unsound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety
flutter: 00:07 +1 -1: Some tests failed.

I've copied the exact same code from the codelab (in https://github.com/flutter/flutter/issues/78502#issuecomment-802630324) please try that code to see if it the tests passes.

Hi @pedromassangocode , sorry for late reply.
I have copied exactly your code from your comment to test, but it's still failed on my side.
Here is the test log:
flutter run test/screens/home_test.dart
Launching test/screens/home_test.dart on Mi Note 10 in debug mode...
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                        14.9s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...                 6.6s
I/flutter (23744): 00:00 +0: Testing IconButtons
Activating Dart DevTools...                                      2,246ms
Syncing files to device Mi Note 10...                               75ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h Repeat this help message.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
An Observatory debugger and profiler on Mi Note 10 is available at:
http://<IP_ADDRESS>:61287/OzdqXg4A5Uo=/

Flutter DevTools, a Flutter debugger and profiler, on Mi Note 10 is available at:
http://<IP_ADDRESS>:9103?uri=http%3A%2F%2F<IP_ADDRESS>%3A61287%2FOzdqXg4A5Uo%3D%2F

Running with unsound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety
I/flutter (23744): (The following exception is now available via WidgetTester.takeException:)
I/flutter (23744): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
I/flutter (23744): The following TestFailure object was thrown running a test:
I/flutter (23744):   Expected: exactly one matching node in the widget tree
I/flutter (23744):   Actual: _TextFinder:<zero widgets with text "Added to favorites." (ignoring offstage widgets)>
I/flutter (23744):    Which: means none were found but one was expected
I/flutter (23744):
I/flutter (23744): When the exception was thrown, this was the stack:
I/flutter (23744): #4      main.<anonymous closure> (file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart:113:5)
I/flutter (23744): <asynchronous suspension>
I/flutter (23744): <asynchronous suspension>
I/flutter (23744): (elided one frame from package:stack_trace)
I/flutter (23744): ...
I/flutter (23744):
I/flutter (23744): This was caught by the test expectation on the following line:
I/flutter (23744):   file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart line 113
I/flutter (23744): The test description was:
I/flutter (23744):   Testing IconButtons
I/flutter (23744): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (23744): (If WidgetTester.takeException is called, the above exception will be ignored. If it is not, then the above exception will be dumped when another exception is caught by the framework or when the test ends, whichever happens first, and then the test will fail due to having not caught or expected the exception.)
I/flutter (23744): ══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
I/flutter (23744): The following TestFailure object was thrown running a test:
I/flutter (23744):   Expected: exactly one matching node in the widget tree
I/flutter (23744):   Actual: _TextFinder:<zero widgets with text "Added to favorites." (ignoring offstage widgets)>
I/flutter (23744):    Which: means none were found but one was expected
I/flutter (23744):
I/flutter (23744): When the exception was thrown, this was the stack:
I/flutter (23744): #4      main.<anonymous closure> (file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart:113:5)
I/flutter (23744): <asynchronous suspension>
I/flutter (23744): <asynchronous suspension>
I/flutter (23744): (elided one frame from package:stack_trace)
I/flutter (23744): ...
I/flutter (23744):
I/flutter (23744): This was caught by the test expectation on the following line:
I/flutter (23744):   file:///Users/manhtran/Desktop/flutter/practice/learn-flutter-test/test/screens/home_test.dart line 113
I/flutter (23744): The test description was:
I/flutter (23744):   Testing IconButtons
I/flutter (23744): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (23744): 00:03 +0: Testing IconButtons [E]
I/flutter (23744):   Test failed. See exception logs above.
I/flutter (23744):   The test description was: Testing IconButtons
I/flutter (23744):
I/flutter (23744): 00:03 +0 -1: Some tests failed.

Does the test fails if you run it on Android Emulator?

it's failed on both emulator and real device, my device Xiaomi Mi 10 fyi 🙏

It could be fixed on master, see https://github.com/flutter/flutter/issues/78749#issuecomment-899116788

I ran the code sample from https://github.com/flutter/flutter/issues/78502#issuecomment-802630324 on real device on latest stable and couldn't reproduce the issue.
@ngocmanh1609 can you see if it is solved for you as well?


Update sms_collectionruleincludecollection-server-wmi-class.md

Changed "exclude from" to "include in".

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@robstackmsft For your review.

@davidpaMSFT @arob98 Thanks for the catch and for making this change. We really appreciate your help.
I'm signing this off for merging.

#sign-off


How did you set the URL prefix to ""? By default it is "/data/" when I try it.

Sorry to complain but I wasted 2 days trying to figure out why I was only getting 404 from my tests with MockMvc and in-container. I set up my project with the defaults, I hardly changed anything, yet the URL to the webservices is prefixed with '/data/'. It would have saved a lot of frustration if you'd mentioned it.

Sorry for the frustration, but I'm not following you. There are some tests in this project (maybe you noticed) and they don't use a context path. You must be doing something different (like setting the context path).

I copied your tests almost exactly with a few changes for entity names, and I expected the URL to have no context path (as you say) however it does - my context path is mysteriously '/data' although I can't find where this is set. I assume it is a spring-data-rest default. No?

No.

Argh! I just did a text search of my whole codebase for "data" (as you can imagine there were quite a few hits) and discovered a team mate had inserted his config for spring-data-rest on an elasticsearch project into the base properties file grrrr!
spring.data.rest.basePath=/data
Sorry about the rant.


[BUG] .net maui SkiaSharp crashes

Description
Skiasharp crashes when the Maui application is created with WindowsSdkPackageVersion 10.0.19041.41.
The application works perfectly with 10.0.19041.34.
Code
The best way to share code for larger projects is a link to a GitHub repository: https://github.com/user/repo/tree/bug-123
But, you can also share a short block of code here:
// some C# code here

You can also share some XAML:
<!-- xaml code here -->

Expected Behavior
No response
Actual Behavior
No response
Version of SkiaSharp
2.88.3 (Current)
Last Known Good Version of SkiaSharp
Other (Please indicate in the description)
IDE / Editor
Visual Studio (Windows)
Platform / Operating System
Windows
Platform / Operating System Version
Windows 11
Devices
No response
Relevant Screenshots
No response
Relevant Log Output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

👎
The problem is caused by the use of WindowsSdkPackageVersion 10.0.19041.41 and not by a missing .UseSkiaSharp().

It is this issue https://github.com/mono/SkiaSharp/issues/2999
It is fixed in the Main Branch but no Skiasharp nuget is Release Yet

Thanks for the hint. I really searched for days, but obviously overlooked this entry.
If I see it correctly, the current Maui CommunityToolkit versions require this WindowsSDK version, i.e. without a problem solution it is not possible to switch to current versions.
Question to the great SkiaSharp team: When will there be a bug-fixed version?
Thank you very much for your great work.

Closing this for now as the issue is fixed for both v2 and v3 in the latest preview.


pandas droplevel missing some argument types

Environment data

Language Server version: 2020.9.5
OS and version: Windows 10
Python version (& distribution if applicable, e.g. Anaconda): Anaconda Python 3.7.5

Expected behaviour
No error
Actual behaviour
mi3 : pd.Index = pd.MultiIndex.from_product([[1, 2], [3, 4], [5, 6]], names=["a", "b", "c"])
mi4 = mi3.droplevel("a")
mi4 = mi3.droplevel(["a", "b"])
s = pd.Series([i for i in range(len(mi3))], index=mi3)
s2 = s.droplevel(["a", "b"])
df = s.to_frame("s")
df3 = df.droplevel(["a", "b"])

Get errors  as follows on lines 2, 3, 5 and 7 respectively.  droplevel() allows string and list of string arguments
Argument of type "Literal['a']" cannot be assigned to parameter "level" of type "int" in function "droplevel"
  "Literal['a']" is incompatible with "int"

Argument of type "List[str]" cannot be assigned to parameter "level" of type "int" in function "droplevel"
  "List[str]" is incompatible with "int"

Argument of type "List[str]" cannot be assigned to parameter "level" of type "Level" in function "droplevel"
  Type "List[str]" cannot be assigned to type "Level"
    "__hash__" is an incompatible type
    Cannot assign to "None"
    "List[str]" is incompatible with "int"
      Type "None" cannot be assigned to type "(self: Unknown) -> int"

Argument of type "List[str]" cannot be assigned to parameter "level" of type "Level" in function "droplevel"
  Type "List[str]" cannot be assigned to type "Level"
    "__hash__" is an incompatible type
    Cannot assign to "None"
    "List[str]" is incompatible with "int"
      Type "None" cannot be assigned to type "(self: Unknown) -> int"

Fixes are as follows:
diff core/frame.pyi.ORIG core/frame.pyi
2924c2925
<     def droplevel(self, level: Level = ..., axis: AxisType = ...) -> DataFrame: ...
---
>     def droplevel(self, level: Union[Level, List[Level]] = ..., axis: AxisType = ...) -> DataFrame: ...

diff core/series.pyi.ORIG core/series.pyi
1598c1599
<     def droplevel(self, level: Level, axis: SeriesAxisType = ...) -> DataFrame: ...
---
>     def droplevel(self, level: Union[Level, List[Level]], axis: SeriesAxisType = ...) -> DataFrame: ...

diff core/indexes/base.pyi.ORIG core/indexes/base.pyi
2c2
< from pandas._typing import Dtype, Label, T1, T2, np_ndarray_str, np_ndarray_int64
---
> from pandas._typing import Dtype, Label, Level, T1, T2, np_ndarray_str, np_ndarray_int64
76c76
<     def droplevel(self, level: int = ...): ...
---
>     def droplevel(self, level: Union[Label, List[Label]] = ...): ...

This issue has been fixed in version 2020.9.6, which we've just released. You can find the changelog here: https://github.com/microsoft/pylance-release/blob/master/CHANGELOG.md#202096-23-september-2020


Expand ring_buffer API

Problem: the ring_buffer container lacks several useful methods.
Solution: add the missing methods.
Changes introduced by this pull request:

the with_default, capacity, remove and expand_storage methods.
tests for the new methods.

Other:
This PR is part of #19 effort.

Removed remove method and with_default constructor.
Added len method.
RingBuffer now calls Resetable::reset() when enqueuing an element.
UdpPacketBuffer and RawPacketBuffer now memset their payload in Resetable::reset().

Okay, so I think we have some confusion with this PR.

The new expand_storage method is fine but it seems more useful to call it reserve_exact to match the standard containers and let expanding by more than a single element. I'm not sure if it's ever useful to do that, a reasonable strategy is something like adding 50% more buffers once you're 75% full or something.
Let's not add any unsafe code, smoltcp has 0 grep hits for unsafe and I think this is an important advantage.
I think I miscommunicated what I talked about wrt resetting to you. It already works properly. It's not actually necessary to reset elements on every enqueue() call because every such call after the socket is open comes from the same application. The idea is that a TCP/IP stack implementation would have a pool of packet (and/or socket) buffers; when a new application asks it for a socket, it creates a new UdpSocket (cheap) and assigns it a socket buffer from a pool (cheap) or if none are available, creates a new one (expensive); in either case the UdpSocket constructor does the reset. After the application is done, the UDP socket is destroyed; if you look at the API, there isn't even a way to close an UDP socket once it's open.

I'm sorry for making you do all this work, I'll try to be more clear from the outset in the future...

No, it's ok, I should have thought it through before making the PR.
I think I understand the resetting issue, but it took me some time to realize "socket buffer" doesn't mean SocketBuffer :) The UDP constructor doesn't actually reset anything, but it consumes instances of SocketBuffer which need to be created for each new socket from ManagedSlices (from a pool?), and this is where the resetting happens.  I can't see how these buffers can be returned to the pool right now tho: since ManagedSlice owns a vector, SocketBuffer owns a slice and UdpSocket owns buffers, dropping a socket would free the vectors.
Anyway, I see we don't need resetting in enqueue, but I reckon we still need to actually erase old payload during the resetting.

Let's address buffer resetting in a coordinated way across the entire codebase when we'll make it possible to return buffers to the pool. The changes here are trivial and insufficient on their own.
Regarding expandable ring buffers, I think that was needed for egress handling, but egress is now going to use BTreeMap too, to sort sockets by the earliest time they should be pollwed, so it seems like it's not necessary for now. If it ever is, it's always possible to cherry-pick the commit from here.
Thus, closing.


Waiting until the keyword appears in the title may not be enough

scraping.py line 900
# Waiting until the keyword appears in the title may
# not be enough. The content may still be from the old page.
try:
    WebDriverWait(self.webdriver, 5).until(EC.title_contains(self.current_keyword))
except TimeoutException as e:
    logger.error(SeleniumSearchError('Keyword "{}" not found in title: {}'.format(self.current_keyword, self.webdriver.title)))
    break

like search engine ask.com, the title is always "Ask.com - What's Your Question?" . So i suggest determine url param .

# first move mouse to the next element, some times the element is not visibility, like blekko.com
WebDriverWait(self.webdriver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, selector)))
next_element = self.webdriver.find_element_by_css_selector(selector)
webdriver.ActionChains(self.webdriver).move_to_element(next_element).perform()
# wait until the next page link emerges
WebDriverWait(self.webdriver, 15).until(EC.visibility_of_element_located((By.CSS_SELECTOR, selector)))
element = self.webdriver.find_element_by_css_selector(selector)

I don't know. I mean there is not a good generic solution to go to the next results page for every search engine, because search engines are fundamentally different.

For example with blekko.com, there are many different kinds of results, and one needs to simulate a real user (moving the mouse like you mentioned) to get the next results.
With ask.com the search query is not in the title.

To solve this issue, the next page behaviour should also be abstracted in a own class for every search engine.

Default method to determine that the next keyword was loaded: It can can be found in the title.
Default method to go to next page: Press next page link.

Solution is similar to parsing: Just use a own class for all the search engines that are different from the base cases...

wait_until_keyword_in_url
can replace with
wait_until_keyword_in_url
and
WebDriverWait(self.webdriver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, selector)))
because, when the keywords in url, but the page is not loaded.  but for the all SE,   when the next pageselector is presence,  the page source is loaded.

Ok sorry for the long waiting time. Now the default strategy is as you proposed:
When the SE supports a next pageselector, then wait_until_serp_loaded checks if such a link is available.


ScratchHost

They can't afford to maintain scratchhost :(

If you use it, they just might
SpyC0der77 @.***> schrieb am Di., 3. Sept. 2024, 00:40:

They can't afford to maintain scratchhost :(
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZRA72XOMXYJL2KSIT3ZUTSNVAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGUYDCNRUHEYDSMI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

If you use it, they just might

I would think the opposite.
There are still multiple ways to host your Python projects, @SpyC0der77. You can use AWS EC2, and the Google Compute Engine. Another option is to use GitHub Actions, although it is harder to set up and is not very customizable.

There are ads
blazgocompany @.***> schrieb am Mi., 4. Sept. 2024,
00:59:

If you use it, they just might
I would think the opposite.
There are still multiple ways to host your Python projects, @SpyC0der77
https://github.com/SpyC0der77. You can use AWS EC2, and the Google
Compute Engine. Another option is to use GitHub Actions, although it is
harder to set up and is not very customizable.
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2327587312,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZWHCSFZEHRTCPAOAVLZUY5LPAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRXGU4DOMZRGI
.
 Sept. 2024,
16:04:

There are ads
Oh ok... Didn't realize that because my adblocker is always on. I use
Github Actions because it's free, no-ads, and runs on a Mac.
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2329161955,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZX7S5K2V46BVEOSBH3ZU4HPPAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMRZGE3DCOJVGU
.
You are receiving this because you commented.Message ID:
@.***>

Guys, ScratchHost is not shutting down. It is just one of our nodes might be shutting down, the rest we can afford, but who knows, there is still about 20 days to go, we might be able to get enough money to keep internode running.

The servers on Zimnode will still continue

oh ok. thx for the info

oh ok. thx for the info

No problem.

That isn't allowed on Github Actions, I would advise against it

Do you know exactly where it says that in the ToC or something. If it does, I may move eveything over to ScratchHost

wait on scratchhost i no longer see the store option

@SpyC0der77, Yea.. I don't see it either..

The store will open 6/7 September (Depends on your timezone)

It's temporarily disabled
blazgocompany @.***> schrieb am Mi., 4. Sept. 2024,
23:33:

@SpyC0der77 https://github.com/SpyC0der77, Yea.. I don't see it either..
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2330183977,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZQC5NR2Q7TYGGZYAJDZU54BVAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZQGE4DGOJXG4
.
You are receiving this because you commented.Message ID:
@.***>

I have asked them if I may reenable it
Simon Gilde @.***> schrieb am Do., 5. Sept. 2024, 07:08:

It's temporarily disabled
blazgocompany @.***> schrieb am Mi., 4. Sept. 2024,
23:33:

@SpyC0der77 https://github.com/SpyC0der77, Yea.. I don't see it
either..
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2330183977,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZQC5NR2Q7TYGGZYAJDZU54BVAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZQGE4DGOJXG4
.
You are receiving this because you commented.Message ID:
@.***>

The store will open 6/7 September (Depends on your timezone)

So tomorrow?

We are back now!

What are some good refferal links to get credits other than just afking

What are some good refferal links to get credits other than just afking

You can invite other users to ScratchHost with a referral link and get some credits, you can also do surveys if available for you (Surveys are not always available!)
And we plan to add other ways soon!

For a limited amount of time, you can use coupon code "scratch" for extra credits

Maybe a bit late, but Internode is shutting down tomorrow!!!

A new node is opening btw.
On Fri, 04 Oct, 2024 at 20:18, TheCommCraft @.***>
wrote:

Maybe a bit late, but Internode is shutting down tomorrow!!!
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2394322649,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AT47PWHRIAZCC7FX2ZAM3A3ZZ3LYDAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJUGMZDENRUHE
.
You are receiving this because you commented.Message ID:
@.***>

But to be sure, maybe you should download your servers

Yes
On Fri, 04 Oct, 2024 at 20:21, TheCommCraft @.***>
wrote:

But to be sure, maybe you should download your servers
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2394327499,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AT47PWD622EN5AD3HC4QAADZZ3MBBAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOJUGMZDONBZHE
.
You are receiving this because you commented.Message ID:
@.***>

I cant create a server, it says internal server error

@SpyC0der77, does it say "500"?

yes

yes it does
On Wed, Oct 16, 2024 at 6:19 PM blazgocompany @.***>
wrote:

@SpyC0der77 https://github.com/SpyC0der77, does it say "500"?
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2418065764,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BJAV6RGVWZSVB3GO4AZQWADZ33Q5LAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJYGA3DKNZWGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Then they probably messed up something....

Yeah.

Is it even possible to host Python with persistence on Github Actions?

@georg-stone, It's possible, but you need to schedule a cron to run every 6 hours, because it stops after 6 hours, but if you program is able to gracefully stop and restart, it may work.

What is a cron?
On Wed, Oct 16, 2024 at 6:40 PM blazgocompany @.***>
wrote:

@georg-stone https://github.com/georg-stone, It's possible, but you
need to schedule a cron to run every 6 hours, because it stops after 6
hours, but if your program is able to gracefully stop and restart, it may
work.
—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2418088586,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BJAV6RCYQNCBUM4N6GSOVX3Z33TN7AVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJYGA4DQNJYGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

A schedule trigger
SpyC0der77 @.***> schrieb am Do., 17. Okt. 2024, 14:07:

What is a cron?
On Wed, Oct 16, 2024 at 6:40 PM blazgocompany @.***>
wrote:

@georg-stone https://github.com/georg-stone, It's possible, but you
need to schedule a cron to run every 6 hours, because it stops after 6
hours, but if your program is able to gracefully stop and restart, it
may
work.
—
Reply to this email directly, view it on GitHub
<
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2418088586>,

or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/BJAV6RCYQNCBUM4N6GSOVX3Z33TN7AVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJYGA4DQNJYGY>

.
You are receiving this because you were mentioned.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/TimMcCool/scratchattach/issues/233#issuecomment-2419357483,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATCKMZV5JBPWUQAWESIS76TZ36R6ZAVCNFSM6AAAAABNQ7BJJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJZGM2TONBYGM
.
You are receiving this because you commented.Message ID:
@.***>

Uhm, i can create infinite servers for free, and it keeps saying installing on all of my servers

Infinite servers on what?

ScratchHost

ScratchHost has sadly shut down. Go to the website to find steps to recover information.


Fix java IT for linter

Issue #, if available:
N/A
Description of changes:
A comment in info_with_routing_and_options was confusing spotless and it was ignoring this file entirely.
Some technical details:
Skipping '/mnt/c/GitHub/babushka/java/integTest/src/test/java/glide/cluster/CommandTests.java' because it does not converge.  Run {@code spotlessDiagnose} to understand why

> Task :spotlessJavaDiagnose
    integTest/src/test/java/glide/cluster/CommandTests.java diverges after 10 steps

https://github.com/diffplug/spotless/blob/main/PADDEDCELL.md
There is a spotless rule conflict, it goes to patch the file infinitely, but luckily it has a protection and breaks on 10th iteration.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Good idea, added.
See tests in CI: one two.
Kudos to @MitchellGale for the help


Building a Java Application with Jenkins in Docker

Article checklist
ATTENTION: In your PR - add the ISSUE (topic form) # that this PR corresponds to. You can do this by also adding a comment that states "This fixes #(enter your Idea Content Form #)" to link and close your Idea Content (issue) when the PR is merged.
NOTE: (Please ensure that you have only one open issue + linked pull request at a time. This will ensure that we complete the article in a timely manner from inception to publishing.)
If you have not already please go over our Resources Page for more tips and tricks on how to improve our overall technical writing.
Preliminary Checks - Formatting and Structure

[x] Does your article follow any of the suggested structure formats? - see example formats
[x] Is your article properly formatted in Markdown? - see Github Markdown guide
[x] Have you used the correct folder and file structure? - see Contribution Guidelines
[x] Is your article over 750 words? - Tool: Wordcounter.net
[x] Have you used our preferred heading structure? - H3 (###) and up
[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.
[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.
[x] Have you included a hero image that is 600x400 pixels and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images
[x] In your PR - add a comment that states "This fixes #(enter your Idea Content Form #)" to link and close your Idea Content (issue) when the PR is merged.

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid -  Grammarly
[x] Please place your article through a 3rd party plagiarism checker? We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[x] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide

Contribution guidelines
For first-time contributors and for more details, see Contributing Guidelines

This fixes issue #2171

As you know, we were working on a new structure for our EngEd Repo, which has led to a slight slow down of article publishing. Everything is almost ready now.
In order to publish your article as soon as possible, please do the following:

Download the most recent files off this PR (Make sure to pick the latest one with my revisions and edits).
Delete your article directory from the articles folders.
Do a git pull (take a look at the new structure of the repo after a git pull).
Upload your article files to the new articles folder inside content.
Ping me via Slack if you have any problems.```

Thank you v much for your patience as we worked through our Repo re-structuring process.
The purpose behind this restructure - was to better allow us to handle more volume and allow students to publish more articles and get more involved with the community (with open-source contribution and suggestions).
With most of the changes coming to completion - we will be sure to get your article published asap.
Thank you again - and we are looking forward to more amazing articles.

Sure @WanjaMIKE I will get right to it.

Thank you @hectorkambow. Sounds great.

Hello @WanjaMIKE I am still patiently waiting on your revisions and edits, so I can move the article to the right directory.

@Kikiodazie just migrate it right away. Thanks

@Kikiodazie just migrate it right away. Thanks

Ok then. Will do that.

Hey, @WanjaMIKE, I just moved my article files to the new articles folder inside the content folder. Kindly check if I did it right.

plagiarism check done

plagiarism check done

Thanks @hectorkambow

@WanjaMIKE @hectorkambow Good day. Any update on the review? Patiently waiting.

I will update you shortly. Thanks

I will update you shortly. Thanks

Ok then. Thanks.

always use ### rather than ```##``

Alaways use these ```` to enclose your code as I have done

Alaways use these   ``` to enclose your code as I have done

All noted. Thanks for the correction.
Anything I am to do, please let me know.

Nice work. Quite a detailed tutorial.

Thank you 😊. This means a lot🙌🏾

Great work gents - very informative tutorial - easy to follow along.
Some very minor edits made on my end - please take a look to see if they can be incorporated to future articles .
cc @WanjaMIKE
🚀

Great work gents - very informative tutorial - easy to follow along.
Some very minor edits made on my end - please take a look to see if they can be incorporated to future articles .
cc @WanjaMIKE

Thanks, @hectorkambow. I appreciate the feedback. Have a great weekend.

And thank you, @WanjaMIKE, for the review. Have a great weekend too.

Yes sir 🚀
@Kikiodazie
https://www.section.io/engineering-education/building-a-java-application-with-jenkins-in-docker/

@Kikiodazie Yes. merged means published. Here is the link https://www.section.io/engineering-education/building-a-java-application-with-jenkins-in-docker/

@Kikiodazie Yes. merged means published. Here is the link https://www.section.io/engineering-education/building-a-java-application-with-jenkins-in-docker/
I did not see Hector's reply

No problem.

Yes sir
@Kikiodazie
https://www.section.io/engineering-education/building-a-java-application-with-jenkins-in-docker/

Yayyyyyyy I am so so excited. This just made my day. Thank you guys :sob:


Update 2000-01-02-build.md

Just building wasn't enough for me to get phantomjs working without being in the /bin folder. I found the answer here https://groups.google.com/forum/#!searchin/phantomjs/ubuntu/phantomjs/XLjxnb2aJmM/M8s9SmF1774J after some googling and think that information should be included in the instructions.

The build instruction is already correct. The additional step you describe is technically part of the deployment. It is obviously necessary to make it available on the suitable PATH (see also the download and install instruction).


Integrate bus timetable code into existing codebase

When code for extracting highly serviced bus stops has been completed, integrate the relevant parts into the data ingest module. This will probably require some additional functionalisation.
Left over code can be integrated into the SDG_main module.

Closing as this is not required now - #281 creates and saves the highly serviced stops as a feather file which can be directly imported into the main pipeline.


Use upstream packages directly

Failing CI?

Failing CI?

Looks like kokoro glitched hard.

Failing CI?

Looks like kokoro glitched hard.

I've restarted kokoro, we'll see if it glitches again.

LGTM. Great to see that every CI went green using upstream packages for vtr and yosys!

Has fpga-tool-perf ingested the tarball from a345ef84f06a1fdb1a6016d39c8b3d1c3c6c064e and generated results?  I want to wait for a baseline from fpga-tool-perf before merging this.

There is a PR in tool perf that enabled grabbing the latest packages. It went red due to some issues in the nextpnr environment. As soon as it goes green once again, I'll merge that and the nightly build will use the latest package.

Is there a good place that displays the last N arch-defs git hashs that have run?

Currrently not, we can save this kind of information from somewhere though, (or add a symbiflow binary to the toolchain that can give us the version of the symbiflow-toolchain (from symbiflow-arch-defs). At the moment this information is available only in the name of the tarball.

https://github.com/SymbiFlow/fpga-tool-perf/pull/290 Here is the tool-perf PR to add get autogenerated packages from arch-defs

SymbiFlow/fpga-tool-perf#290 Here is the tool-perf PR to add get autogenerated packages from arch-defs

Ok, great!  I'll wait until a green nightly run, then merge this!

Ok, great! I'll wait until a green nightly run, then merge this!

So, there was a failure in the nightly run of one nextpnr-test, due to an out of memory issue (I believe there are too many parallel tests, I'll need to reduce the number of cores used).
Nevertheless, all the VPR data has been captured in the last run (https://colab.research.google.com/drive/1Ny5OZ06R1KVjDykrAQbR0vTsTyiTT1Q7?usp=sharing).


Added Sonar Qube Application

First attempt at a Sonar Qube application. All the hardwork by https://github.com/tpires/docker-sonar
Integration Test Works, and I can install from my local App Library
Icon is a bit rubbish, I couldn't find an official SonarQube SVG

Can one of the admins verify this patch?

ok to test

Refer to this link for build results (access rights to CI server needed):
https://fabric8-ci.fusesource.com/job/fabric8-quickstarts-master-pullreq/273/
Test PASSed.

thanks for the PR


Hardcoded endpoints in project.service.ts and replication.service.ts

In project.service.ts there is a hardcoded endpoint /api/projects, here for example. Also, there is a hardcoded endpoint /api/replications in replication.service.ts here. These should be extracted to be part of the service configuration (example). This issue is blocking Admiral#268

Thanks, @shadjiiski. Checked, hardcoded URL existing. Will fix soon.


lp-solve format to json format

Hi, thanks for the solver which is one of the very few in Javascript. I am working on a problem and the following (in LP-solve format) was solved successfully
          var model = [
                               "min: 1 d_cred 869.83 d_salespct -632.36 d_rmpct -1 d_recv -1 d_rm -158.21",

                               "1 d_salespct <= 1.2",
			  "1 d_salespct >= 1.05",
			  "1 d_rmpct <= 1.3",
			  "1 d_rmpct >= 0.8",
			  "12 d_cred -316.18 d_rmpct >= 0",
			  "-12 d_cred 1897.08 d_rmpct >= 0",
			  "12 d_recv -434.92 d_salespct >= 0",
			  "-12 d_recv 2609.49 d_salespct >= 0",
			  "12 d_rm -316.18 d_rmpct >= 0",
			  "-12 d_rm 1897.08 d_rmpct >= 0",
			  "12.5 d_clwip -316.18 d_rmpct -79.57 >= 0",
			  "-15 d_clwip 1897.08 d_rmpct 477.45 >= 0",
			  "12.5 d_clfg 0.5 d_clwip -316.18 d_rmpct -87.12 >= 0",
			  "-15 d_clfg -3 d_clwip 1897.08 d_rmpct 522.75 >= 0",
			  "1 d_cred 869.83 d_salespct -632.36 d_rmpct -1 d_recv -1 d_rm -158.21 = 0"
                              ];

However this format is for testing purpose only since the values cannot be pre-fed and will be dynamically generated. So I want to use the json format. But I am stuck on how to turn this into json format. Following is how I have framed it:
 var model = {
    "optimize": {
            "d_cred": 1,
            "d_salespct": 869.83,
            "d_rmpct": -632.36,
            "d_recv": -1,
			"d_rm": -1,
			"const": -158.21
        },
    "opType": "min",
    "constraints": {
        "d_salespct": {"max": 1.2, "min": 1.05},
        "d_rmpct": {"max": 1.3, "min": 0.8},

"variables": {
        		"d_salespct": {
						"d_salespct": 1
		                             },
			"d_rmpct":   {
					       "d_rmpct": 1
		                            },
			"d_cred":     {
			   		      "d_cred": 1
		                            },
			"d_recv":    {
					    "d_recv": 1
		                          },
			"d_rm":      {
					"d_rm": 1
		                           },
			"d_clwip": {
					"d_clwip": 1
		                        },
			"d_clfg": {
					"d_clfg": 1
		                      }

I am able to frame simple constraints like  "1 d_salespct <= 1.2", but for other constraints I am not able to figure out how to represent them in json format. Can you please help?

available in source code


Example for ODE systems

Hi, thanks again for open sourcing your repository. Could you provide a simple example on how to apply your model for discovery of ODE systems (e.g. 2 variables). I had a look at the lorenz.py example but I get the following error:
ImportError: cannot import name 'DE_fit' from 'ProGED.parameter_estimation'

(I am also guessing that the code has changed since the lorenz.py example was added.)
My fundamental question is the following:
When I have a system of equations, do I need to run fit() multiple times, once per component of the system (as specified by target_variable_index). If so, how do I deal with the fact that the equation discoverer usually outputs many candidates (=sample_size), i.e., I would get multiple candidates per component. What's the best way to combine the candidate of different components, is it just the cartesian product?
Thanks a lot for you help!

Hi!
We have recently changed the way ProGED as set up and have not yet updated all the examples and documentation. Most importantly, a pandas dataframes is expected, with column names matching variable names. Furthermore, rhs_vars and lhs_vars expect lists with variable names. Time should be called either "t" or "time".
We also built in better support of systems of equations. Now, Model represents a system of equations, represented as a list of expressions. Parameter estimation always fits all the components in the system. The generator generates each components independently by default. You could change this behavior by manually calling ProGED.generate.generate_models with system_size=1 for each component, and then composing the system yourself, for example, through cartesian product. Which approach is better is unclear at the moment.
The most comprehensive source of examples currently is test/test_core.py. (Note that at the moment, some tests will throw assertion errors for "wrong" results, but in fact, the code is running fine). Since there is no test for 2D ODEs with generation and estimation, I wrote an example below.
`np.random.seed(2)
Generate and prepare data
t = np.arange(0, 1, 0.1)
x = 3np.exp(-2t)
y = 5.1np.exp(-1t)
data = pd.DataFrame(np.vstack((t, x, y)).T, columns=['t', 'x', 'y'])
Set up equation discovery
ED = pg.EqDisco(data = data,
task_type="differential", #either algebraic or differential
lhs_vars = ["x", "y"], # the variables on the left-hand side, the number should match system_size
rhs_vars = ["t", "x", "y"], # the variables that can appear on the right-hand side
sample_size = 3, # how many random candidate systems to generate
system_size = 2, # how many equations in the system of equations
generator_template_name = "polynomial", # the grammar to use; you can write your own
strategy_settings = {"max_repeat": 100}) # gives more attempts to generator, ensuring we get 3
print("Generating models...")
ED.generate_models()
print(ED.models)
print("Estimating parameters...")
ED.fit_models()`
print("The best discovered model:")
print(ED.get_results())
`
I hope this answers your questions. If you have any further issues, please do not hesitate to ask!

Thanks for your quick answer! In case anyone else stumbles upon this, add these imports, then the script runs:
import numpy as np
import pandas as pd
from ProGED.equation_discoverer import EqDisco

(you will need to change pg.EqDisco to just EqDisco).

Thanks for catching the lack of imports! For the sake of completness, I have edited my answer to include them.

Hi!
Regarding your first issue (FloatingPointError: overflow encountered in square), this is strange. The program already does the wrapping you suggest, and should be outputting only warnings for stuff like overflows or root of a negative number. When I try your code, I get a few warnings, but the code completes. Perhaps this could be due to a different package versions (numpy, sympy, etc.)?
The second issue turned out to be a bug, related to our recent introduction of config files - the program was not registring your setting of task_type="differential", but kept the default "algebraic". The config files require more fixing, but this specific issue should be resolved now.  In my tests, the code works for all combinations of x,y on the LHS and x,y,t on the RHS.
Thanks for helping us improve the program!

On the first issue: I see - in fact, I am not getting the error any longer (but unfortunately don't know what exactly I changed, perhaps you are right and it was some versioning problem.

On the second issue: Thanks for fixing the problem - I re-installed the most recent version and now it seems to work.

Thanks for your help!


Add m.prop.sync

This is written to behave like 0.2.x's m.sync. Also added migration docs.

Look good, thanks. I think it might be better to change the name though since streams are not async. I think merge is the more common name for this stream operation, correct me if I'm wrong @JAForbes

@lhorie I think you're right about merge being the more common name.

What's wrong with then? run sounds weird.

A+ Promises try to absorb thenables, and run/map only take one
argument, whereas then takes two.
—Pierre-Yves
On Thu, Jul 14, 2016 at 1:59 PM, Hugo Freitas<EMAIL_ADDRESS>wrote:

What's wrong with then? run sounds weird.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/lhorie/mithril.js/pull/1147#issuecomment-232645557,
or mute the thread
https://github.com/notifications/unsubscribe/AADU8-jgSOc9FjoqrxOIYPSzvVXMhPjZks5qViS6gaJpZM4JLDPR
.


Run switch instead of a schedule switch

Is your feature request related to a problem? Please describe:

As a user, I'd like to be able to have the mower go back to the charging station when I arrive home. This is to prevent my son from getting into the mower to play with it.
Describe the solution you'd like:

I would like a switch which turns "on" when the mower is mowing the lawn, or "on" when I press the button manually. When "off" I would like it to run on the next schedule.
Describe alternatives you've considered:

The existing switch seems to park indefinitely, rather than until the next scheduled execution.
Additional context:

Mower:

Year:
Model:

My main concern with this item is the dual control of the mower mowing the lawn between Apple HomeKit and any home automation, and the mower onboard schedule.
User Personas

Someone that wants to control the mower only within HomeKit
Someone that wants to use the mower onboard schedule to control timing while being able to turn the mower off via HomeKit
Someone that wants to use the onboard schedule to control timing while still enabling the mower manually via HomeKit

Personas 1 and 3 essentially end up operating the same way. The only difference is the mower starts without the knowledge of the plug-in at predetermined intervals.
Persona 2 is going to get strange behavior if they turn the mower on. Given that the switch would be “run until turned off”. This seems more like a desire for a stop button than a switch to me.
Normal expectations of any switch turned on, is it would be turned off at some point.

The big difference here is the change in behavior of the controlling service needs to use “park until further notice” or “park until next schedule”.
Only persona 1 could use the “park until further notice” call, the other two would use “park until next schedule”. In which case if “park until next schedule” was also used for persona 1, this would meld persona 1 and 3 together.


Add Chrome "Login Data" artifact

Add Chrome "Login Data" artifact

@obsidianforensics any more context you can provide? I've assigned these to you, assuming you wanted to work on these.

There now is ChromiumBasedBrowsersLoginDataDatabaseFile, closing issue.


When function call arguments are empty, explorer is stuck on "Loading..."

For example: https://explorer.testnet.near.org/transactions/BGWDmSzSJ6FEEVuKvWaXViPNbPiNn5V6jDV3EDP5mNkU (and few other recent calls on this dev account).
Trick is to construct a FunctionCallAction with empty args vec. I think explorer assumes that args is never empty, and near-api-js also sets args to {} (string) when args aren't supplied.

@mikroskeem Thanks for reporting it! We will resolve it later this week


feat: implement reflection

The idea behind this PR is to move away from using JS overlay classes when they are actually not needed and stick to Java classes. This means we won't need TeaVM's JSON object to serialize/deserialize jsons.
If this is merged all http requests that were meant to work with JSON.stringify(JSObject) can now directly take a json string as a parameter and also return the json string as a result.


OS Aplet/Ekosystém/Redocly

What/Why/How?
Reference
Testing
Screenshots (optional)
Check yourself

[✓ ] Code changed? - Tested with redoc/reference-docs/workflows (internal)
[✓ ] All new/updated code is covered with tests
[ ✓ ] New package installed? - Tested in different environments (browser/node)

Security

[ ✓] Security impact of change has been considered
[ ✓] Code follows company security practices and guidelines

jj to by šlo


Group drive list by date and seperate with subheadings

It can be confusing with so many drives in the list to find one you want, but I think adding subheadings to group the drives by date would make it nicer to use. The design might not be up to standard but I think this is quite simple :smile:

This takes up quite a bit of space, maybe something more subtle might work, like how discord for example separates messages between days?

Sure I like that, I'll give it a go

Let me know what you think of this instead

We've given it some thought and for now we don't really want to make design changes like this, in some time we plan to give the design a overhaul, so putting effort in changing the current design isn't really worth it.
PRs to other non-design issues are welcome though.