Can't submit because of 404 Client Error: NOT FOUND for url: http://grader.crowdai.org:1729/v1/envs/

adam@adam-ThinkPad-T520 ~/Desktop/running/stuff/osim-rl $ python scripts/submit.py --token XXX
Updating Model file from 30000 to latest format...
Loaded model gait9dof18musc_Thelen_BigSpheres.osim from file /home/adam/Desktop/running/stuff/osim-rl/osim/env/../models/gait9dof18musc.osim
[2017-08-11 14:18:24,879] POST http://grader.crowdai.org:1729/v1/envs/
{"env_id": "Run", "token": "688545d8ba985c174b4f967b40924a43", "version": "1.4.1"}
Traceback (most recent call last):
  File "scripts/submit.py", line 19, in <module>
    observation = client.env_create(args.token)
  File "/home/adam/Desktop/running/stuff/osim-rl/osim/http/client.py", line 57, in env_create
    resp = self._post_request(route, data)
  File "/home/adam/Desktop/running/stuff/osim-rl/osim/http/client.py", line 43, in _post_request
    return self._parse_server_error_or_raise_for_status(resp)
  File "/home/adam/Desktop/running/stuff/osim-rl/osim/http/client.py", line 34, in _parse_server_error_or_raise_for_status
    resp.raise_for_status()
  File "/home/adam/.local/lib/python2.7/site-packages/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND for url: http://grader.crowdai.org:1729/v1/envs/

I also met this issue. Any fix now?

Works for me now, closing. If it still happens to you feel free to re-open.
https://www.crowdai.org/topics/judger-is-down/comments/new


DCV and CAA lambda handlers expect objects instead of dicts

To be consistent with the Coordinator lambda, DCV and CAA lambda handlers should expect domain objects instead of dicts.
Thanks @lmarte78 for making this inconsistency apparent.

This was failing integration due to an unused import in mpic_caa_cheker_lambda . I fixed this and it is good to merge in now.
Quick note, I believe the zipping code only includes common domain and CAA checker paths in the layer for the CAA checker. The unit test code includes the entire open_mpic_core . This discrepancy is why unit tests were passing on this branch but not integration. This may break integration again in the future.


Vanilla core

Hi! Great to see another concurrency lib out there.
I read in the article that you consider writing a vanilla core. I'd be very interested to use it over at https://github.com/MartinMalinda/vue-concurrency :)

We recently published @sheepdog/core which is basically all the logic with an adapter pattern if you want to take a look...thanks for being interested! 😄


Particle emitter does not stops, even though maxParticles is being set

Version

Phaser Version: 3.55.2
Operating system: Windows 10
Browser: Chrome 91

Description
Particle emitter does not stop creating particles, even thought the maxParticles is being set.
When changing the below codepen from maxParticles: 30 to maxParticles: 19, it stops. From 20 onwards it does not stops.
It is a bit random, just keep playing with the numbers. It also have the same weird behavior if you change the lifespan or speed.
Example Test Code
https://codepen.io/ivorcosta/pen/qBmZGON

I'm not sure what's the expected behavior for maxParticles. It changed from v3.15.1 to v3.16.1, but that may have been because of an unrelated bugfix.
In the test code example, the emitter is never at its limit because it never creates 30 particles. It creates only 20 or so and then recycles them. If you change lifespan or frequency it may then hit the limit if no dead particles are available.
It does seem peculiar to me that once an emitter reaches its limit (described as a creation limit) it stops emitting particles at all, even if dead ones are available.

I thought maxParticles was the maximum total allowed amount of particles the emitter could fire.
I want a small animation that fires a few particles and stops. In order to achieve that, I have to start a emitter and use setTimeout to stop it after a while? Wouldn't have a more elegant solution?

maxParticles is the maximum amount it can fire in one single burst, not in total.
There is no such feature for 'kill this emitter after X particles are emitted', although I may consider it for a PR.

@photonstorm Is https://labs.phaser.io/view.html?src=src/game objects\particle emitter\fire max 10 particles.js&v=3.16.1 the expected behavior then?

There is no such feature for 'kill this emitter after X particles are emitted', although I may consider it for a PR.

@photonstorm The emitter does stop once the sum of the recycling-pending (dead) particle count and the alive count is greater than maxParticles.

maxParticles is the maximum amount it can fire in one single burst, not in total.

By changing maxParticles to 15 in this example, the sum of dead and alive ones never exceed 15 since the dead ones are recycled.

Set to hard limit the amount of particle objects this emitter is allowed to create.

Docs sentence communicates particle object amount limit. While this is technically true since total amount of js objects (dead + alive) is not greater than that, it is misleading since one expects the option to apply on what they see on screen.
https://github.com/photonstorm/phaser/blob/aa5f54cfa268c86823bf1dd52c83099fa0ef9ac2/src/gameobjects/particles/ParticleEmitter.js#L462-L471

By changing the following on the aforementioned example page, one can validate the non-exceeding counts over time:
// ...
        maxParticles: 15,
// ...

function update (time, delta)
{
    fpsText.setText('FPS: ' + (1000/delta).toFixed(3) + '\n' +
       `Alive ${particles.emitters.first.alive.length}` + '\n' + `Dead ${particles.emitters.first.dead.length}`);
}


Errors duplicates

When you do multiple save(validate: true), the errors are added. Need to reset errors before running validations.

Fixed.


row_limit should be applied to tiles, not metatiles

When using metatiles (metatile parameter greater than 1), the row_limit applies to the whole metatile, not to each tile. This may be too low in some situations. Specifically, overviews are computed assuming a row_limit of 65536 per tile, not per metatile.
The next map, which shows a metatile layer, has been rendered with metatile=1, and it appears correctly:

Now, this is the result with metatile=2. As can bee seen, one metatile (4 tiles) is now over the row limit and appears incomplete:

cc @javisantana @rafatower

We could just pass row_limit*metatile*metatile as the actual row_limit to Mapnik. Could this be too large in some cases?

We could just pass row_limit*metatile*metatile as the actual row_limit to Mapnik. Could this be too large in some cases?

Averaged over the metatile this will be the same, and rendering one image of metatile^2*row_limit rows is less work than rendering metatile^2 images of row_limit rows.

It seems we are not having a row_limit currently in production: https://github.com/CartoDB/cartodb-platform/blob/develop/cookbooks/node-windshaft/attributes/default.rb#L76
So this should not be a problem in production ATM.

Both parameters can be tweaked at configuration so you can decide if you want to go with the row_limit*metatile*metatile or any other value.


Event ChatEvent - Wall of errors

Every time a player writes in chat, Bungeecord gets this error:
https://pastebin.com/hNF0dg9h

Disable SkellettProxy in Skellett config.yml when using Skungee. Skungee is not SkellettProxy and will not work together.


Removed id="add-contact" breaks e2e tests downstream

This commit is breaking my tests https://github.com/testing-angular-applications/contacts-app-starter/commit/87c8e295407f651c3c27f6a5991452cefbcdb390 downstream. Should have Protractor tests included in CI

sorry about that. i should have asked you to take a look at it before i made that change.


ocaml-ng.ocamlPackages_4_12.js_of_ocaml: 3.8.0 -> 3.9.1

eliom is kind of holding back our update of js_of_ocaml. Since
js_of_ocaml 3.8.0 is not available for 4.12, let's update js_of_ocaml
for 4.12 only for now, since we wouldn't be able to support eliom there
anyways.
This unbreaks a lot of packages because --with-js_of_ocaml defaults to
true for a lot of packages, leading to a lot of breakage due to packages
like mtime. Updating js_of_ocaml is much simpler than conditionally
disabling the flag for 4.12.

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@ofborg build ocamlPackages.eliom ocaml-ng.ocamlPackages_4_12.js_of_ocaml ocaml-ng.ocamlPackages_4_12.mtime

@ofborg build ocamlPackages.eliom ocaml-ng.ocamlPackages_4_12.js_of_ocaml ocaml-ng.ocamlPackages_4_12.mtime

I don’t adhere to the reasoning behind this PR. IMHO it is less complex and more useful to fix #114263 and update jsoo for all versions of OCaml.

Fair enough. I just noticed that upstream has a patch for eliom already, just no new release. Until that happens we can just fetchpatch it and update js_of_ocaml for all versions.

@ofborg build ocamlPackages.eliom

Thank you very much!


Show Progress For Queried Followers Per Profile

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


How to add a row like checkbox in the editForm

Hi !  Nice to see you again!
Can I add a checkbox group that the row is not exist database?

Write a custom lookup or use enum.


issue/5742-update-readme (#5758)

Pull request opened by the merge tool on behalf of #5758

Merged in 70f64ab4893e5b8e4a9bf8fa80b219373a222f1e


convert -strip -interlace Plane -quality 80 all the JPGs

AKA: convert all JPGs to progressive, stripped of comments, and 80% quality
This shouldn't affect website performance too much, because gatsby already processes images,
but it should definitely help with repo size and build times
Before:

After:

I'm not comfortable with lossless compression without a designer's approval. Can you run the preview by one of them on Slack first? :pray:

fine, but you do realise that everytime you use image_optim, you're also using lossy compression, right?
I can run this through them, but I honestly don't think this should be a norm. 80% quality jpegs are pretty much a norm, and the impact in quality is small enough for this to be considered a technical decision rather than a design one
lossy compression on PNGs, now that would be a different scenario, but jpegs are tipically used for photos and other kinds of images where such losses are perfectly acceptable

fine, but you do realise that everytime you use image_optim, you're also using lossy compression, right?
:raised_eyebrow: You sure? According to their README it is always lossless by default, the lossy compression is optional.

I can run this through them, but I honestly don't think this should be a norm. 80% quality jpegs are pretty much a norm, and the impact in quality is small enough for this to be considered a technical decision rather than a design one
lossy compression on PNGs, now that would be a different scenario, but jpegs are tipically used for photos and other kinds of images where such losses are perfectly acceptable

I'm not arguing with the value of your proposition, just tired of hearing smack about how developers don't care or whatever (pun intended). I just don't want to hear them complain afterwards, doesn't hurt to include them in the decision.

I wouldn't do this for one reason: I like to have the image at its highest resolution so I can visually compare it against the final processed version. Still, I don't think this change affects. I also don't agree that this a design decision, website performance, and image optimization is clearly the responsibility of a developer until it affects the final result.

until it affects the final result.

:arrow_up: That is precisely my point. It does not hurt to include them in judging whether the final result is being affected. Unless you have an objective way of defining "being affected", it is subjective and therefore I believe they should be included.
In any case, if you both are against including the designers, they by all means please disregard my comment and proceed without my input.

I am not against, especially because this was a very wide change across all images
anyway, francisco already gave his :+1: on this one as well

Sorry, missed a couple of comments here:

0You sure? According to their README it is always lossless by default, the lossy compression is optional.

Guess I was wrong, sorry about that. Didn't notice that part of the readme, and I had always been under the assumption that the defaults included lossless as well.
@gabrielpoca I'm not sure I understand your point
if the website only uses images with 960px width (1820 with retina), then why would you want to keep a 3000px image? can't the same visual comparison be done if you scale it down to 1820?

It can, but I'm also 100% sure that I'll forget to ask for a bigger image if those sizes increase for some reason.

@naps62 can we close this?

you mean merge or cancel?

@naps62 I would rather cancel for the reason I mentioned: if the design changes and we need bigger images we'll have a berbicacho.

@gabrielpoca I'm not following.
The only change here was to the jpeg params for each image (using progressive jpegs with 80% quality, which is pretty much the standard). There is no change to image resolution
"if the design changes and we need bigger images", then we'd still have that problem.
This is purely saving space

@naps62 for some reason I thought this would change the resolution. In that case, let's merge it. Do you want to re-run the thing for new images?

@naps62 bump


Enhancement of calendar based journals

Hi,
for intervall based journals there is the possiblitiy to set an End-Date where the journal should end.
I would love to see the in calendar-based journals, too.
Use Case:
I work with calendar based weekly Journals for my work-projects to generate a weekly work record which I can get to my customer.
If a project is finished I would love to "end" or disable the the corresponding journal, so that no new journal-pages can be created.
Thx
Volli

I was planing to do this as part v2 bit update - there is ongoing discussion on it in https://github.com/srg-kostyrko/obsidian-journal/issues/54


Some Fix

The test : org.apache.flink.table.planner.expressions.MapTypeTest.testMapField
You can view it here.
Lets Dive deeper into this Test and the fix provided for the issue:
Flakiness:
To check the flakiness of the test, I used a tool called nondex.
You can reproduce the test using the commands below:
mvn install -pl flink-table/flink-table-planner-blink -am -DskipTests
mvn -pl flink-table/flink-table-planner test -Dtest=org.apache.flink.table.planner.expressions.MapTypeTest#testMapField
mvn -pl flink-table/flink-table-planner edu.illinois:nondex-maven-plugin:2.1.1:nondex -Dtest=org.apache.flink.table.planner.expressions.MapTypeTest#testMapField

Using the commands above I determined the test to be Flaky.
Issue:
flink-table-planner-blink does not exist anymore as it has been renamed to flink-table-planner .
You check it out here : Release Notes Flink 1.14
Next, I tried to run non-dex few tests on flink-table-planner  using nondex.
Although nondex managed to determine the tests flaky, I couldn't find the code in the repo checking its last commit. According to the sources online, the tests have might been removed from flink.
Still finding the cause. If you could provide any insights to look into, would be helpful

I think you need to confirm if the test is present or not in the latest commit.
If it has indeed been removed, then you should update the IDoFT repo and move on. This PR will not lead to anything if test is deleted.

I am not sure I understand the scenario. Are you saying NonDex determined that the test is flaky but the corresponding code is not present in the latest commit ?

I am not sure I understand the scenario. Are you saying NonDex determined that the test is flaky but the corresponding code is not present in the latest commit ?

Yeah. all my work done is in the latest commit. The nondex tool somehow ran and failed at a particular test even though it doesnt exist in the codebase. When I search for the code directly in the repo, it exists in some other branch not the main.

I am not sure I understand the scenario. Are you saying NonDex determined that the test is flaky but the corresponding code is not present in the latest commit ?

Yeah. all my work done is in the latest commit. The nondex tool somehow ran and failed at a particular test even though it doesnt exist in the codebase. When I search for the code directly in the repo, it exists in some other branch not the main.

That is a strange case. I suggest you to try it out on a fresh clone, main branch and see if the issue persists. It technically does not make sense for NonDex to find a line that does not exist.

It would be better if you can description the tool (Nondex) using in detecting the flaky tests!


Upgrade Error Revision 8f64a0eb31: Error in process sentinel: Error in a doom module "modules/lang/python/config.el", (void function eval-when!)

I upgraded doom today to:
Old revision: e3750dbf66 (8 days ago)
New revision: 8f64a0eb31 (11 hours ago)
I'm trying to doom reload, and I'm getting the error below. I have not  change my config files. I have the package Python in my init.el
Error in process sentinel: Error in a doom module "modules/lang/python/config.el", (void function eval-when!)
Additional details:

If an error message is involved include a backtrace of it.
![image](https://user-images.githubusercontent.com/13126838/91779203-73f37180-ebba-11ea-8654-b4cebaf195d4.png)

System information:

Place the output of `M-x doom/info` or `~/.emacs.d/bin/doom info` here.
![image](https://user-images.githubusercontent.com/13126838/91779265-a0a78900-ebba-11ea-98ee-12098c5940f2.png)

I removed python from init, doom sync and it went fine.
Then added python back, doom sync, and it went fine.
Not sure where was the fluke, but now is fine.


Update README.md

Fix typo

Thanks for the PR - I'm closing since this is not against the develop branch and I will add manually.


Can i write data to bar reg ?

Hi, sir:
when i get bar address, can i write or read data to bar reg? ex: bar+0, bar+1..........

You can't access the device itself using pci. That tool is only meant to configure PCI devices, not to access PCI devices. The incomplete and not yet documented tool hw on the other hand can already access I/O ports described by the BAR of a PCI device. If BAR1 of function 3 of device 7 on bus 0 is an I/O range, this invocation of hw is supposed to work:
hw inb 00:07.3$1+7

This will read the port at offset 7 inside the I/O region described by BAR1 (counting starts at BAR0). As hw is still unfinished, it's not yet included in a release, but you would need to compile it yourself.
Memory access in hw is not yet implemented, and implementing access to arbitrary memory space from a 16-bit DOS executable is non-trivial to implement. The goal of hw is that as long as you don't use the PCI features, it can be used on a legacy model 5150 IBM PC. It should not grow too big to comfortably fit on a 360KB floppy, so I am hesitant to add a DOS extender to it. I might resort to using the "extended memory copy" service provided by the AT (+later) BIOS, and hope that they do a proper WORD and/or DWORD access, but I'm not convinced that call does so in all cases.

I just checked a random BIOS implementation: INT 15h, AH=87h does not allow byte access, so it seems inappropriate for accessing byte registers in MMIO areas. Too bad. At least, that implementation (Award 4.51) can be used for word and doubleword access without issues.


[Doc] Description for Producer SendAsync Needs Updating

Search before asking

[X] I searched in the issues and found nothing similar.

What issue do you find in Pulsar docs?
The description for SendAsync implies that it is a blocking operation, but asynchronous calls should be non-blocking and occur in a background thread.
What is your suggestion?
The SendAsync method in Pulsar is designed to send messages asynchronously, allowing the application to continue processing other tasks without waiting for the send operation to complete. A user-defined callback function is invoked upon the completion of the send operation which can be used to track the success / failure of the send operation.
Any reference?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

Looking at the internalSendAsync implementation, it would only be blocking if DisableBlockIfQueueFull is set to false and the queue is full.

In addition, it could be useful to check the javadoc too.

@lhotari

In addition, it could be useful to check the javadoc too.

I didn't find much in terms of a function description in the javadocs, but maybe this isn't the right place?
However, there is a good description in the Go docs for SendAsync, which I copied.


Yaw control not behaving as expected with stable release v1.7.0

I tuned a quadcopter with X configuration. The step and impulse response of roll, pitch and yaw angles was up to the mark during the manual flight. I gave a mission to the quadcopter. The flight was smooth until a location where a yaw of more than 90 degrees. The yaw of the vehicle went in the opposite direction of the setpoint for the yaw. This made the quadcopter oscillate dangerously for some amount of time.
I repeated the same mission and observed the same behavior. I am attaching the yaw response of the quadcopter for the two flights. Can anyone tell me what could be issue?

Yaw wraps at +-180 degrees and the system chooses the shortest rotation direction, so it didn't go into the opposite direction but the shortest.
The oscillations are due to improperly tuned yaw gains (YAW_P or YAWSPEED_P). They are too high for your system and show critical oscillation. You will want to reduce the YAW_P gain to 50-70% of its current value and re-try.


bounds changes every few weeks

Verify latest release

[X] I verified that the issue exists in the latest release

I know how to solve the bug
I don't know how to solve the bug and I will provide an example.
Link to the code that reproduces this issue
n/a
To Reproduce
<GoogleMap
                defaultCenter={defaultProps.center}
                defaultZoom={defaultProps.zoom}
                onGoogleApiLoaded={onGoogleApiLoaded}
                onChange={(map: any) => {
                    const bounds = map.bounds;
// the shape of bounds changes every few week!
                    const minLat = (bounds.Va ?? bounds.Ua ?? bounds.Ia).lo;
                    const maxLat = (bounds.Va ?? bounds.Ua ?? bounds.Ia).hi;
                    const minLng = (bounds.Ha ?? bounds.Ga ?? bounds.Va).lo;
                    const maxLng = (bounds.Ha ?? bounds.Ga ?? bounds.Va).hi;
                }}
            >

Describe the Bug
The shape of the bounds object changes. it used to be bounds.Va and bounds.Ha for lat and LNG respectively. It has changed twice over the last few months and crashes our app each time.
Expected Behavior
I'd expect the bounds.whatever to be consistent. That way we could rely on it
Which browser are you using? (if relevant)
Chrome

@TheMkrage could it be related to the Maps API? This is very strange. Code hasn't changed.
Could you give me an example of the bounds objects?

I wasn't converting the bounds to JSON and didn't realize I needed to. This is working for me now:
const bounds = map.bounds;

                    const { north, south, east, west } = bounds.toJSON();
                    ````

@TheMkrage It shouldn't be necessary. At the end of the README, you can see an example of how bounds are used.
If it's working, anyway, close the issue. Thank you.


NvimError("'ctermbg' must be string or integer")',

when i try to compile the plugin with nyoom
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: NvimError("\'ctermbg\' must be string or integer")', /Users/luxus/.cargo/git/checkouts/nvim-oxi-68d2fdc1d1cdbe82/15fb30d/nvim-oxi/src/lua/lua.rs:41:12
stack backtrace:
   0:        0x103ecf8a0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he13a97dfe3ba6dc4
   1:        0x103ef73e4 - core::fmt::write::hd751207b60c12d4c
   2:        0x103ed9954 - std::io::Write::write_fmt::h08841cca3656c74a
   3:        0x103ee4404 - std::panicking::default_hook::{{closure}}::h8d96478a0c41fbb8
   4:        0x103ee40c8 - std::panicking::default_hook::haca5b586a55289c5
   5:        0x103ee4918 - std::panicking::rust_panic_with_hook::h419d889b0a87beff
   6:        0x103ecfcfc - std::panicking::begin_panic_handler::{{closure}}::hf9a5ae5699838d81
   7:        0x103ecf9b4 - std::sys_common::backtrace::__rust_end_short_backtrace::h6248404e1e92c641
   8:        0x103ee4518 - _rust_begin_unwind
   9:        0x103efb92c - core::panicking::panic_fmt::ha964b6658f104372
  10:        0x103efb988 - core::result::unwrap_failed::hf92687bbd06849b8
  11:        0x103ec9334 - _luaopen_oxocarbon
  12:        0x101246258 - <unknown>
  13:        0x1012be51c - _luaL_openlibs
  14:        0x101246258 - <unknown>
  15:        0x10125995c - _lua_pcall
  16:        0x100cdbdc4 - _nlua_require
  17:        0x101246258 - <unknown>
  18:        0x10125995c - _lua_pcall
  19:        0x100cd94bc - _nlua_pcall
  20:        0x100cda3a8 - _nlua_exec_file
  21:        0x100db0fa0 - _do_source
  22:        0x100dadbbc - _do_in_cached_path
  23:        0x100dad140 - _source_runtime
  24:        0x100cbc97c - _load_colors
  25:        0x100c81ba4 - _ex_colorscheme
  26:        0x100c7d33c - _execute_cmd0
  27:        0x100c7d050 - _execute_cmd
  28:        0x100bce964 - _nvim_cmd
  29:        0x100bbc2f0 - _nlua_api_nvim_cmd
  30:        0x101246258 - <unknown>
  31:        0x1012be51c - _luaL_openlibs
  32:        0x101246258 - <unknown>
  33:        0x10125995c - _lua_pcall
  34:        0x100cdbdc4 - _nlua_require
  35:        0x101246258 - <unknown>
  36:        0x1012be51c - _luaL_openlibs
  37:        0x101246258 - <unknown>
  38:        0x10125995c - _lua_pcall
  39:        0x100cdbdc4 - _nlua_require
  40:        0x101246258 - <unknown>
  41:        0x10125995c - _lua_pcall
  42:        0x100cd94bc - _nlua_pcall
  43:        0x100cda3a8 - _nlua_exec_file
  44:        0x100db0fa0 - _do_source
  45:        0x100ce3344 - _main
fatal runtime error: Rust panics must be rethrown
fish: Job 1, 'RUST_BACKTRACE=full bin/nyoom...' terminated by signal SIGABRT (Abort)

rustc --version
rustc 1.62.1

cargo --version
cargo 1.62.0

By briefly looking at the linked issue it seems the problem is with oxocarbon.nvim? If you could provide a code snippet replicating the failure that'd be great, not really sure what that plugin is doing. Also, is it compiling nvim-oxi with or without the nightly feature flag?

I'm guessing its this:
https://github.com/shaunsingh/oxocarbon.nvim/blob/main/src/lib.rs#L33
Noob guess: set background=dark/light should not cause it to panic?
I may be wrong. @noib3 can you check it out?

sorry for not delivering all infos at the beginning
https://github.com/shaunsingh/nyoom.nvim/blob/main/bin/nyoom
is the script that build the config ... first bin/nyoom install and then bin/nyoom sync
when i try to start nvim then it shows the error
i only found ctermbg in oxi and not in the theme, thats why i thought its not the theme itself.
it used to work and break since some newer versions of rust
i tested it on linux and mac with multiple versions of rust
there are multiple people with the issue since some days
https://github.com/shaunsingh/oxocarbon.nvim/issues/9

@luxus I get all that, but if I was opening an issue on someone else's project I'd at least give them a code example that replicates the error. I might be wrong but it sounds like you're asking me to debug that shell script, which I don't think is a reasonable request.
Once I have a code snippet that I can use to figure out what the error might be then I'll be happy to help.

looks like the problem is indeed not the theme or the simple script itself..
https://github.com/noib3/nvim-oxi/runs/7926368174?check_suite_focus=true complaining about foreground color as well
i closed the issue, don't think i can help here.

@luxus the error messages are clearly different: 'ctermbg' must be string or integer vs 'foreground' must be string or integer. And I still have no idea what code is causing the error you reported.

should be fixed in 7aa9521b1ab4998ad26192615475812e8ba95507

i tested it with an older commit that used oxi, still the same error message.
by now the other of the config moved away from nvim-oxi, so for me it's not that important to fix the issue.. maybe it was a theme issue and not related to nvim-oxi
what i did to test it.
i did a backup of my config
then
rm -rf ~/.cargo; rm -rf ~/.config/nvim; rm -rf ~/.local/share/nvim
git clone git@github.com:shaunsingh/nyoom.nvim.git ~/.config/nvim
cd ~/.config/nvim
git checkout 4cb9e18
bin/nyoom install
bin/nyoom sync
nvim

That's expected, if you checkout an older commit of that project then oxocarbon.nvim will still use an older version of nvim-oxi.
You should clone oxocarbon.nvim, do a cargo update to update the nvim-oxi dependency to the latest master and use that version of oxocarbon.nvim in nyoom (or don't use nyoom at all, AFAICS the issue is with oxocarbon and has nothing to do w/ nyoom).


argument of type int not iterable

I'm trying to setup a Smappee EV Wall, the setup is a little unconventional, but it used to work in the past. I used it a while a month or 2 back, but then had to reset my HA, and only recently got back to enabling OCPP again.
The  unconventional thing about this setup is the way the Smappee connects. The EV Charger is connected to the Smappee cloud through an monitoring tool that is connected to the internet. In the Smappee Cloud dashboard I can set-up a "Public charging CSMS", and fill in the endpoint of that "public" CSMS. This is basically a way of connecting your charger via the smappee cloud over OCPP to a public platform.
The way I managed to setup this, is by connecting my local running raspberry pi over an SSH tunnel to a remote server. I then expose my OCPP port over that SSH tunnel, and set a Nginx reverse proxy in front with a HTTPS certificate. This used to work.
Enabling the setup now, I can see my charger connecting for a few seconds, and then losing the connection.
I enabled debugging, and managed to capture the following logs (with errors).
2022-03-31 23:02:19 DEBUG (MainThread) [custom_components.ocpp] Closing websocket to 'SMP_6200000632'
2022-03-31 23:02:19 INFO (MainThread) [custom_components.ocpp] Charger SMP_6200000632 disconnected from <IP_ADDRESS>:9000.
2022-03-31 23:02:19 INFO (MainThread) [websockets.server] connection closed
2022-03-31 23:02:24 INFO (MainThread) [websockets.server] connection open
2022-03-31 23:02:24 INFO (MainThread) [custom_components.ocpp] Websocket Subprotocol matched: ocpp1.6
2022-03-31 23:02:24 INFO (MainThread) [custom_components.ocpp] Charger websocket path=/ocpp/SMP_6200000632
2022-03-31 23:02:24 INFO (MainThread) [custom_components.ocpp] Charger SMP_6200000632 reconnected to <IP_ADDRESS>:9000.
2022-03-31 23:02:24 DEBUG (MainThread) [custom_components.ocpp] Reconnect websocket to SMP_6200000632
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"f179f1d2-d93d-42ba-b3bd-970d98c18874","GetConfiguration",{"key":["SupportedFeatureProfiles"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"f179f1d2-d93d-42ba-b3bd-970d98c18874",{"configurationKey":[{"key":"SupportedFeatureProfiles","readonly":true,"value":"CSLtype"}],"unknownKey":[]}]
2022-03-31 23:02:26 INFO (MainThread) [custom_components.ocpp] Supported feature profiles: CSLtype
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"0b1139c0-2f44-4853-b6a1-520a6a2682f0","GetConfiguration",{"key":["NumberOfConnectors"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"0b1139c0-2f44-4853-b6a1-520a6a2682f0",{"configurationKey":[{"key":"NumberOfConnectors","readonly":false,"value":"1"}],"unknownKey":[]}]
2022-03-31 23:02:26 DEBUG (MainThread) [custom_components.ocpp] Get Configuration for NumberOfConnectors: 1
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"04482569-70dc-4456-903d-2b65988b0f5d","ChangeAvailability",{"connectorId":0,"type":"Operative"}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"04482569-70dc-4456-903d-2b65988b0f5d",{"status":"Accepted"}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"049dba77-f9f4-43f1-8d2b-06837d707fa9","GetConfiguration",{"key":["HeartbeatInterval"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"049dba77-f9f4-43f1-8d2b-06837d707fa9",{"configurationKey":[{"key":"HeartbeatInterval","readonly":false,"value":"3600"}],"unknownKey":[]}]
2022-03-31 23:02:26 DEBUG (MainThread) [custom_components.ocpp] Get Configuration for HeartbeatInterval: 3600
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"efab0ffd-e16d-464a-8c0b-e2145be58517","GetConfiguration",{"key":["WebSocketPingInterval"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"efab0ffd-e16d-464a-8c0b-e2145be58517",{"configurationKey":[{"key":"WebSocketPingInterval","readonly":true,"value":"60"}],"unknownKey":[]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"4460344d-f162-43e3-8578-f30060c38651","GetConfiguration",{"key":["MeterValuesSampledData"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"4460344d-f162-43e3-8578-f30060c38651",{"configurationKey":[{"key":"MeterValuesSampledData","readonly":false,"value":"Energy.Active.Import.Register,Energy.Reactive.Import.Register,Energy.Active.Import.Interval,Energy.Reactive.Import.Interval,Power.Active.Import,Power.Reactive.Import,Power.Offered,Power.Factor,Current.Import,Current.Offered,Voltage,Frequency,RPM,SoC,Temperature,Current.Export,Energy.Active.Export.Register,Energy.Reactive.Export.Register,Energy.Active.Export.Interval,Energy.Reactive.Export.Interval,Power.Active.Export,Power.Reactive.Export"}],"unknownKey":[]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"be001b19-4c8c-4444-b6de-f00de673cd5d","GetConfiguration",{"key":["MeterValueSampleInterval"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"be001b19-4c8c-4444-b6de-f00de673cd5d",{"configurationKey":[{"key":"MeterValueSampleInterval","readonly":false,"value":"60"}],"unknownKey":[]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: send [2,"fe3837ae-ab83-4a72-aff9-0a6c1ceecc2d","GetConfiguration",{"key":["ClockAlignedDataInterval"]}]
2022-03-31 23:02:26 INFO (MainThread) [ocpp] SMP_6200000632: receive message [3,"fe3837ae-ab83-4a72-aff9-0a6c1ceecc2d",{"configurationKey":[{"key":"ClockAlignedDataInterval","readonly":false,"value":"900"}],"unknownKey":[]}]
2022-03-31 23:02:26 ERROR (MainThread) [custom_components.ocpp] Unexpected exception in connection to 'SMP_6200000632': 'argument of type 'int' is not iterable'
Traceback (most recent call last):
File "/config/custom_components/ocpp/api.py", line 898, in run
await asyncio.gather(*self.tasks)
File "/config/custom_components/ocpp/api.py", line 448, in post_connect
if prof.SMART in self._attr_supported_features:
TypeError: argument of type 'int' is not iterable
2022-03-31 23:02:26 DEBUG (MainThread) [custom_components.ocpp] Closing websocket to 'SMP_6200000632'
2022-03-31 23:02:26 INFO (MainThread) [custom_components.ocpp] Charger SMP_6200000632 disconnected from <IP_ADDRESS>:9000.
2022-03-31 23:02:26 INFO (MainThread) [websockets.server] connection closed
2022-03-31 23:02:32 INFO (MainThread) [websockets.server] connection open
2022-03-31 23:02:32 INFO (MainThread) [custom_components.ocpp] Websocket Subprotocol matched: ocpp1.6
2022-03-31 23:02:32 INFO (MainThread) [custom_components.ocpp] Charger websocket path=/ocpp/SMP_6200000632
2022-03-31 23:02:32 INFO (MainThread) [custom_components.ocpp] Charger SMP_6200000632 reconnected to <IP_ADDRESS>:9000.
2022-03-31 23:02:32 DEBUG (MainThread) [custom_components.ocpp] Reconnect websocket to SMP_6200000632

My log is getting spammed, I have disabled the integration for now, as the ev charger is constantly trying to reconnect, with the same above error as a result.
If there is anything I can do to help debug, please let me know. Unfortunately my Python knowledge is very limited, but I do know my way around other programming languages and configuring machines etc...
Very much appreciate anyone looking into this.

We could make our integration a bit more robust against 'unknown' FeatureProfiles. @drc38, do you agree?

What are you thinking,  default to Core or simply improve error handling?

default to Core would be a good solution I think. It should always be  supported according to the standard. Unknown FeatureProfiles should be ignored.

Please check v0.4.29

Upgraded to v0.4.29. Error still seems the same (altho the line number in the trace changed)
Logger: custom_components.ocpp
Source: custom_components/ocpp/api.py:448
Integration: Open Charge Point Protocol (OCPP) ([documentation](https://github.com/lbbrhzn/ocpp/blob/main/README.md), [issues](https://github.com/lbbrhzn/ocpp/issues))
First occurred: 01:28:45 (23 occurrences)
Last logged: 01:31:34

Unexpected exception in connection to 'SMP_6200000632': 'argument of type 'int' is not iterable'
Traceback (most recent call last):
  File "/config/custom_components/ocpp/api.py", line 909, in run
    await asyncio.gather(*self.tasks)
  File "/config/custom_components/ocpp/api.py", line 448, in post_connect
    if prof.SMART in self._attr_supported_features:
TypeError: argument of type 'int' is not iterable

v0.4.29 won't fix your issue as the profile is not supported. I assume it logged the following before throwing an error? Unknown feature profile detected ignoring: CSLtype

You can replace line 481 with feature_list=["Core","SmartCharging"] etc based on what profiles your charger supports.

Correct, my log was spammed with the message.
Unknown feature profile detected ignoring: CSLtype
Because the integration kept crashing and rebooting.
When you say replace the line, am I supposed to edit the integration myself to fix this? Or should I try to log an issue with the company of my charger?

You can do both 😉

Issue is no longer relevant. Smappee fixed the problem on their side. Connection seems to be relatively stable now.


az login --identity fails on an AzureML compute instance: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Describe the bug
Command Name
az login --identity
Errors:
The command failed with an unexpected error. Here is the traceback:
Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
  File "/opt/az/lib/python3.10/site-packages/knack/cli.py", line 231, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 663, in execute
    raise ex
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 697, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 333, in __call__
    return self.handler(*args, **kwargs)
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
  File "/opt/az/lib/python3.10/site-packages/azure/cli/command_modules/profile/custom.py", line 122, in login
    return profile.login_with_managed_identity(username, allow_no_subscriptions)
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/_profile.py", line 234, in login_with_managed_identity
    msi_creds = MSIAuthenticationWrapper(resource=resource)
  File "/opt/az/lib/python3.10/site-packages/msrestazure/azure_active_directory.py", line 592, in __init__
    self.set_token()
  File "/opt/az/lib/python3.10/site-packages/azure/cli/core/auth/adal_authentication.py", line 75, in set_token
    super().set_token()
  File "/opt/az/lib/python3.10/site-packages/msrestazure/azure_active_directory.py", line 596, in set_token
    self.scheme, _, self.token = get_msi_token_webapp(self.resource, self.msi_conf)
  File "/opt/az/lib/python3.10/site-packages/msrestazure/azure_active_directory.py", line 548, in get_msi_token_webapp
    token_entry = result.json()
  File "/opt/az/lib/python3.10/site-packages/requests/models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
  File "/opt/az/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/opt/az/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/opt/az/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Create a compute instance in AzureML (mine is STANDARD_DS11_V2)
Start the compute instance and click on the Terminal link to start a session
Run az login --identity as suggested by the welcome message

Expected Behavior
az login --identity should log me in without failures
Environment Summary
Linux-5.15.0-1017-azure-x86_64-with-glibc2.31, Ubuntu 20.04.4 LTS
Python 3.10.5 ("base" conda environment)
Installer: DEB

azure-cli 2.39.0 *

Extensions:
ml 2.11.0

Dependencies:
msal 1.18.0b1
azure-mgmt-resource 21.1.0b1

Additional Context

Duplicate of #20853

This is still an issue for me and the solution to #20853 did not help in my case. This is my stack trace after using az login -i on an azure ml compute instance
The command failed with an unexpected error. Here is the traceback:
Expecting value: line 1 column 1 (char 0)
Traceback (most recent call last):
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/requests/models.py", line 971, in json
    return complexjson.loads(self.text, **kwargs)
  File "/anaconda/envs/azureml_py38/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/anaconda/envs/azureml_py38/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/anaconda/envs/azureml_py38/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 663, in execute
    raise ex
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 697, in _run_job
    result = cmd_copy(params)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 333, in __call__
    return self.handler(*args, **kwargs)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/command_modules/profile/custom.py", line 122, in login
    return profile.login_with_managed_identity(username, allow_no_subscriptions)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/_profile.py", line 234, in login_with_managed_identity
    msi_creds = MSIAuthenticationWrapper(resource=resource)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/msrestazure/azure_active_directory.py", line 592, in __init__
    self.set_token()
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/azure/cli/core/auth/adal_authentication.py", line 75, in set_token
    super().set_token()
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/msrestazure/azure_active_directory.py", line 596, in set_token
    self.scheme, _, self.token = get_msi_token_webapp(self.resource, self.msi_conf)
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/msrestazure/azure_active_directory.py", line 548, in get_msi_token_webapp
    token_entry = result.json()
  File "/anaconda/envs/azureml_py38/lib/python3.8/site-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

@julyvee your issue is similar to #23978

@bebound Yes, but there is no real solution in that ticket. What does "Taking extra steps to login" even mean.

@bebound Could you please post the solution here? Having the same issue and have no clue what does "Taking extra steps to login" mean as well.

I hit this too just now. Exact same issue. Any steps to fix?

Routing to ML team to provide further guidance on what "Taking extra steps to login" is.

Hi, we are also experiencing the same issue for most of the users in our AzureML workspaces. Interestingly for some users (including me) we are not able to reproduce this issue.
@jiasli @azureml-github can you please share guidance on this? Happy to share further details to troubleshoot.

Are we mean to assign a managed identity to compute instances? the notes on starting a terminal instance in Azure ML Studio are
Welcome to the Azure Machine Learning terminal
Enter "git clone [url]" to clone a repo
Enter "git --help" to learn about Git CLI. To learn more about integrating Git with the Azure Machine Learning terminal, navigate here:
https://learn.microsoft.com/en-us/azure/machine-learning/concept-train-model-git-integration#clone-git-repositories-into-your-workspace-file-system
Enter "az ml --help" to learn about Azure ML CLI v2
Note: Use "az login --identity" instead of "az login" to avoid device code authentication
However there is no mention of the need for a managed identity.

Faced the same issue described here with az login --identity, even with creating the compute instance with a system-assigned identity.
I managed to login using the identity by addind the --username flag and passing the managed identity's application ID, like this: az login --identity --username <application-id-from-aad-enterpriseapplication-for-the-managed-identity>
Question is - why does the ID need to be specified if it's a system-assigned managed identity tied to the compute instance?

@jiasli  I have the same issue but when running cat ~/.azure/msal_token_cache.json (other thread, similar bug) the file is not empty. The login fails when doing az login --identity

What solved the problem for me was to restart the compute instance and log in via az login.

What solved the problem for me was to restart the compute instance and log in via az login.

Does az login log you in with the system-assigned identity or with your own personal account?

Hi @julyvee,
Did you solve this issue?

We just faced the same issue. It seems that settings for identity-based auth had not been set up correctly, that's one thing. But also the fact that the compute instance had been created by another user caused problems.
There are two things that it took to resolve:

Copy settings for identity-based auth to environment variables: For that run
while read -r line ; do export $line; done < /etc/environment.sso in your shell. This will copy settings for authentication endpoints.

The compute instance in question had been created by someone else for me. In AzureML Studio, go to the compute instance and click on "Jupyter" in the "Applications" column. This will bring up a warning message, asking you to click if you trust this compute instance. Click to confirm that.

Once both those steps had been done, I was able to run az login --identity correctly.
So in way I guess the error message that I received was masking that "do you trust this compute instance" problem.

Experienced this issue again on a brand new compute.
Then tried suggestion from this comment and step 2 didn't do anything (I didn't see the warning message) but step 1, saying run while read -r line ; do export $line; done < /etc/environment.sso in terminal, made az loging --identity work (not throw an error). However, whenever a new terminal is created this fix needs to be applied again.
I did notice that the az login -i said that i am now logged in with the identity of the virtual machine - is that expected/desired? I thought that all things in Azure ML are done via the user's identity. Note that for my use cases of azure.identity i need to loging into az as a user, not at the VM's identity.
@yonzhan, @jiasli, @bebound - i guess you're from the relevant team - could you please provide guidance on how things should be done? Also, could you propagate this information to the relevant Azure ML folks so that the need for this workaround can be removed?


Reduce Sleep

during the reconcilation loop we check to see if we have any orphaned Ips, and during this we currently have a 1.5 second sleep. I ran some tests and found a decent perf improvement by dropping this by half, but removing it completely caused issues

PTAL @dougbtv

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 54.58%

Totals

Change from base Build<PHONE_NUMBER>0:
0.0%

Covered Lines:
1442

Relevant Lines:
2642

💛  - Coveralls


Fix sequence eid project

+ re-enable tests
Closes #321

Codecov Report
Base: 68.05% // Head: 68.29% // Increases project coverage by +0.23% :tada:

Coverage data is based on head (3ae2d2e) compared to base (a065c90).
Patch coverage: 89.47% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #326      +/-   ##
==========================================
+ Coverage   68.05%   68.29%   +0.23%
==========================================
  Files          71       71
  Lines        5466     5482      +16
==========================================
+ Hits         3720     3744      +24
+ Misses       1746     1738       -8

Impacted Files
Coverage Δ

db/python/tables/sequence.py
86.00% <66.66%> (+3.52%)
:arrow_up:

db/python/layers/sequence.py
80.23% <100.00%> (+2.85%)
:arrow_up:

test/test_sequence.py
100.00% <100.00%> (ø)

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


pubsub.subscribe fails if called twice with the same subscription name

The sample code for pubsub will fail if it's run twice.
The "subscribe" method:
topic.subscribe('new-subscription'...)
Will fail if "new-subscription" already exists.  I see the following error:
Resource already exists in the project (resource=new-subscription).

All subscriptions must be given unique names. That line is saying: "Create a new subscription named new-subscription", so it is expected to fail the second time.
Do you think it would be more clear if we changed it to:
// Subscribe to the topic.
topic.subscribe('new-subscription-name', function(err, subscription) {

Sure, but presumably we don't want to be creating thousands/millions of subscriptions? (one per code invocation).  What I really want to do is get back to the same subscription, but it seems there are a bunch of hoops I need to jump through to do that.
Are we saying that the "recommended" approach is to first call getSubscriptions to see if the one you're looking for is there, and if it's not call subscribe?
Seems to me that it would be simpler for the developer if subscribe were a "get-or-create"

You can use reuseExisting (https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.31.0/pubsub/topic?method=subscribe):
topic.subscribe('maybe-subscription-name', { reuseExisting: true }, function(err, subscription) {
  // subscription was "get-or-create"-ed
});

Another way to do it (this is a pattern throughout our whole API):
var subscription = topic.subscription('maybe-subscription-name');
subscription.get({ autoCreate: true }, function(err, subscription) {
  // subscription was "get-or-create"-ed
});

Hm - seems like that should be the default, no ?

reuseExisting should be true by default? I don't think so, because if it exists, you would just use:
var subscription = 'maybe-subscription-name';
subscription.on('message', function(message) {});

If you're unsure if it exists, that's why we have both of those examples from my last post.
I'm not sure I understand the Pub/Sub use cases where users are uncertain if a topic exists (related: #696), but if you both think that defaulting reuseExisting is the right way to go, I'll gladly send a PR. Is it worth considering removing the reuseExisting option altogether?
// @tmatsuo since we're talking Pub/Sub stuff.

RE: worker/broadcast model concepts, I haven't looked at it like that before, but I think that makes sense. If I'm following, are you saying we should generate subscription names for the user? (Related: https://github.com/GoogleCloudPlatform/gcloud-ruby/issues/193)

So making this into code:
I'm a worker! I might not see every message that gets published!
var topic = pubsub.topic('tweets');
pubsub.subscribe(topic, 'parse-language', { reuseExisting: true }, function(err, sub) {
  sub.on('message', function(msg)  {
    // Detect the language of this tweet!
    // Then ack!
  });
});

I'm just a listener to everything! Bring it on!
var topic = pubsub.topic('tweets');
pubsub.subscribe(topic, 'random-listening-subscription-id', {autoAck: true}, function(err, sub) {
  sub.on('message', function(msg) {
    console.log('Got a tweet! Awesome!');
  });
});

Though the latter case might be better as...
var topic = pubsub.topic('tweets');
pubsub.subscribe(topic, function(err, sub) {
  sub.on('message', function(msg) {
    console.log('Got a tweet! Awesome!');
  });
});

Maybe a simply solution for now is to just add { reuseExisting: true } to the README so users don't get tripped up in their first 5 minutes

Thanks for the code examples, it always helps! So is this right?:
 Remove the reuseExisting option. If it can't be created because it already exists, don't return an error and just use the subscription.
If I don't give a name to subscribe, just create one for me named something random.

I'd want @tmatsuo to chime in here if possible... but that's my thought... Sometimes I want to just listen on a topic, and I don't ever intend to share the listening responsibilities with anyone else...

Ping @tmatsuo for thoughts!

Sorry guys for the late reply.
Currently subscription name automatic assignment doesn't work as expected, so there's no reliable way of auto assigning a subscription name. However, the use cases that @jgeewax explained make sense to me.

@jgeewax should we wait until that feature is supported to change the model here or implement now and do our own name generation, e.g. {projectId}-{uuid}?

If you auto-generate a name, isn't there a risk that the user will end up back in the world of thousands of zombie subscriptions? (does that matter?)
Would it make sense to just have a "default" subscription name, such that the absence of a name argument in subscribe simply means using a default name? (like, I dunno: "DEFAULT"). The implication being that any client who subscribes in this way will be using the same subscription instance

@jgeewax @tmatsuo any thoughts?

It's just my opinion. I would not implement subscription names auto generation on the client side. There are many corner cases and the implementation will be complex. I would wait for the server side to implement it.
I don't think zombie subscription is a big problem. Subscriptions which are inactive for 30 days will be automatically get turned down. Also messages delivered to the subscriptions are only retained for 30 days.
@eschapira
WDYT?

I think I'm going to suggest the opposite of Takashi.
The autogeneration is simple; on the server side this is the code (in java)
  // Compose subscription name of topic + a random long number in hex format.
  String subscriptionName =
      topicName + "-" + String.format("%x", Math.abs(Random.nextLong()));

It would be fine to do this on the client.
Regarding the default subscribe() behavior, I would prefer if it doesn't create unintended random subscriptions, it will pollute the client resources and possibly put unnecessary load on the server if this pattern repeats too much. Users should explicitly say autoCreateSubscription: true or something like that.

What happens if the topic name has a length of 255?

It's also tricky if multiple subscribers are auto creating subscriptions at the same time. because then they are unintentionally using the same subscription?

Although I'm not strongly against implementing it on the client side. If the implementation is robust, I'm fine with it.

@jgeewax how shall we proceed?

Can you summarize the options here? I realize that the thread started with "don't fail when subscribing twice", but it progressed to a few different use-cases on top of that, right?

Yes, this is mostly a discussion of an API shift you suggested here, allowing for unnamed subscriptions to be created automatically. I think the best thing to do would be going over the thread starting from there, as we had many opinions weigh in, so it'd be unfair of their expertise if I left any of their points out in a summary.

@jgeewax @omaray

@stephenplusplus I think API should be slightly expanded and simplified imho, when I first looked into pubsub (having used common alternatives in the past), I was expecting something like so:
/*
 - if topic exists, reuse otherwise auto create
 - publish()/subscribe() topic arg can be a string
 - wildcard support for topics, then subjects make more sense
 - subjects are optional, default to *
 - simple publish API pubsub.publish(topic, subject[optional], msg), handle all logic internally
*/

var pubsub = gcloud.pubsub(conf);

// BROADCAST - all subscribers receive the message
pubsub.subscribe(topic, function(msg, subject) {
  console.log('received message', msg, 'on subject', subject);
});

// WORKERS/QUEUE - message delivered to only one subscriber (ack built in)
pubsub.subscribe(topic, {queue:'myjob.workers'}, function(msg) {
  console.log('starting job');
})

// REQUEST/REPLY - unsubscribe after X responses are received (1 in below example)
pubsub.request(topic, msg, {autoUnsubscribe:1}, function(response) {
  console.log('receive response', response);
});

pubsub.subscribe(topic, function(message, replyTo) {
  var response = {foo:'bar'};
  pubsub.publish(replyTo, response);
});

I'm going to attempt to wrap the current API see if I can accomplish the above

Thanks! I also like the idea of creating a subscription without requiring a name, although I think keeping the event emitter works well with the Pub/Sub model:
topic.subscribe(function(err, subscription) {
  if (err) // API error, subscription couldn't be created
  subscription.on('message', function(message) {})
});

If we wanted to add a shortcut, maybe something like:
topic.onMessage(function(err, message) {
  if (err) // API error, subscription couldn't be created
  // subscription created & registered for message events
});

I think that extra functionality you drew up would fit well in a library that wraps ours.

Here's where we stand:

remove opts.reuseExisting from topic.subscribe('name', opts)
automatically generate a subscription name for the user if they don't provide one

@jgeewax explained the worker vs broadcast model:
A worker takes an item from the message queue, works, acks. The name of the subscription is important to the worker, so the same work isn't performed on the same message multiple times.
The broadcast model is for a listener who just wants to tap into the incoming messages. The name of the subscription doesn't matter in this case.
Before
topic.subscribe('my-subscription', { reuseExisting: true }, function(err, subscription) {
  // subscription was either created or re-used
})

After
topic.subscribe('my-subscription', function(err, subscription) {
  // subscription was either created or re-used
})

To differentiate between the worker and broadcast models, we will use the presence of a subscription name in place of opts.reuseExisting. So, if I just want to receive all of the messages:
topic.subscribe(function(err, subscription) {
  // subscription with a random name was created
})

Any corrections or thoughts before I move forward with a PR?

PR sent in #1799

https://github.com/googleapis/nodejs-pubsub/pull/226#issuecomment-425842632


add missing @Override to classes

What is the purpose of the change
add missing @Override to classes
Brief changelog
XX
Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a GITHUB_issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a GITHUB issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Format the pull request title like [Dubbo-XXX] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[x] If this contribution is large, please file an Apache Individual Contributor License Agreement.

aim to  #1239

Looks good to me, thanks for the pull request!


testing autotester, take eleventy

yet another autotester test.

Status Flag 'Pull Request Inspection' - Auto Inspected - Inspection Has Been Deemed Not Necessary for this Pull Request.

Status Flag 'Pull Request AutoTest' - Testing Jenkins Projects:
JOB: BSSIO_autotester_test; Build 44 on Jenkins server at https://jenkins-son.sandia.gov
Using Parameters:

BSSIO_SOURCE_BRANCH = pr-test-wcm-001
BSSIO_SOURCE_REPO = https://github.com/william76/betterscientificsoftware.github.io
BSSIO_SOURCE_SHA = d3467431cfd1b41e67830d4e1c496bfb303fc583
BSSIO_TARGET_BRANCH = develop
BSSIO_TARGET_REPO = https://github.com/william76/betterscientificsoftware.github.io
BSSIO_TARGET_SHA = b8697259c5ad45014c07cd280168f1f9ec63aac9
JENKINS_JOB_TYPE = Experimental
TEST_REPO_ALIAS = BSSIO

Using Repos:
Repo: BSSIO (william76/betterscientificsoftware.github.io) Branch: pr-test-wcm-001 SHA: [d3467431cfd1b41e67830d4e1c496bfb303fc583] - TEST_REPO
Pull Request Author: william76 (William)

Status Flag 'Pull Request AutoTest' - Jenkins Testing: 1 or more Jobs FAILED
Note: Testing will normally be attempted again in approx. 0:00:04 hours.  If a change to the Pull Request source branch occurs, the testing will be attempted again.
=== TESTING HAS FAILED ===
JOB: BSSIO_autotester_test Build 44 - FAILED:
-- JENKINS PARAMETERS:

BSSIO_SOURCE_BRANCH = pr-test-wcm-001
BSSIO_SOURCE_REPO = https://github.com/william76/betterscientificsoftware.github.io
BSSIO_SOURCE_SHA = d3467431cfd1b41e67830d4e1c496bfb303fc583
BSSIO_TARGET_BRANCH = develop
BSSIO_TARGET_REPO = https://github.com/william76/betterscientificsoftware.github.io
BSSIO_TARGET_SHA = b8697259c5ad45014c07cd280168f1f9ec63aac9
JENKINS_JOB_TYPE = Experimental
TEST_REPO_ALIAS = BSSIO


az 2.11.1 az vmss diagnostics set fails 'NoneType' object has no attribute 'storage_profile'

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az vmss diagnostics set
Errors:
To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.
First, I set environment variables for the_vmssdiagnosticsstorageaccount and the _vmssname.
Then I ran these commands (note: MacOS, so the date command is not GNU).
$ _EXPIRY=$(date -jf "%a %d %b %Y %T %Z" -v "+1m" "$(date)" +"%Y-%m-%dT%H:%MZ") && echo "Expiry: $_EXPIRY"
$ _SAS="$(az storage account generate-sas --expiry "${_EXPIRY}" --permissions adclpruw --resource-types sco --services btfq  --account-name "${_vmssdiagnosticsstorageaccount}")"
$ az vmss diagnostics get-default-config --debug -o json > config.json 2> protected-config.json
$ sed -e "s#__DIAGNOSTIC_STORAGE_ACCOUNT__#${__vmssdiagnosticsstorageaccount}#g" -i bk ./config.json
$ sed -e "s#__VM_OR_VMSS_RESOURCE_ID__#${_vmssname}#g" -i bk ./config.json
$ sed -e "s/__STORAGE_ACCOUNT_NAME__/${_vmssname}/" -i bk ./protected-config.json
$ sed -e "s/__SAS_TOKEN_WITHOUT_LEADING_QUESTION_MARK__/$(echo "$_SAS"|sed -e 's/\&/\\&/g')/" -i bk ./protected-config.json
$ vi protected-config.json #Delete the first line, which reads: "Protected settings with storage account info is required to work with the default configurations, e.g.", and save the file.

# Both of the following commands fail:
$ az vmss diagnostics set --vmss-name "${_vmssname}"  --settings config.json --protected-settings protected-config.json
$ az vmss diagnostics set --vmss-name "${_vmssname}"  --settings @./config.json --protected-settings @./protected-config.json

Put any pre-requisite steps here...
subscription, resource group set as defaults (using az config --default group=xyz, etc).

Expected Behavior
Diagnostics are set on the VMSS.
Observed Behaviour
Command fails with a traceback:

'NoneType' object has no attribute 'storage_profile'
Traceback (most recent call last):
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/knack/cli.py", line 215, in invoke
    cmd_result = self.invocation.execute(args)
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 654, in execute
    raise ex
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 718, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 711, in _run_job
    six.reraise(*sys.exc_info())
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/six.py", line 703, in reraise
    raise value
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 688, in _run_job
    result = cmd_copy(params)
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/commands/__init__.py", line 325, in __call__
    return self.handler(*args, **kwargs)
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/core/__init__.py", line 782, in default_command_handler
    return op(**command_args)
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/command_modules/vm/custom.py", line 2878, in set_vmss_diagnostics_extension
    is_linux_os = _is_linux_os(vmss.virtual_machine_profile)
  File "/usr/local/Cellar/azure-cli/2.11.1/libexec/lib/python3.8/site-packages/azure/cli/command_modules/vm/custom.py", line 173, in _is_linux_os
    os_type = vm.storage_profile.os_disk.os_type.value if vm.storage_profile.os_disk.os_type else None
AttributeError: 'NoneType' object has no attribute 'storage_profile'

Environment Summary
macOS-10.15.6-x86_64-i386-64bit
Python 3.8.5
Installer: HOMEBREW

azure-cli 2.11.1

Additional Context
I upgraded azure-cli from 2.0.12:
brew upgrade azure-cli

Then I had to re-link it:
brew link --overwrite azure-cli

This also didn't work, so then I ran azure upgrade (which finally worked).

cc @houk-ms

#14287

Will be fixed on 12/29/2020.


A potential compromise: automated submissions with revdep checks

Given https://github.com/r-universe-org/help/issues/363#issuecomment-1971854389 and @gmbecker's comments above, I would like to sketch a potential change in direction to help r-releases have the best of both worlds. I think it has major advantages:

It won't accept packages until all checks and revdep checks pass.
It won't accept packages unless the package version is incremented.
It does not require R-universe to host its own revdep checks.
It is protected against contributors deleting their releases.
This would not add extra manual review.

Initiating pull requests

Record explicit package versions instead of "*release" in packages.json as @jeroen originally suggested in https://github.com/r-universe-org/help/issues/363#issuecomment-1962350281.
Users send these package versions to https://github.com/r-releases/r-releases as fully-fledged json text files.

Scanning pull requests

A scan_pull_requests.yaml periodically runs as the r-releases-app bot and scans the pull requests in https://github.com/r-releases/r-releases.
For each added/changed package listing in each pull request, determine which package listing were added or updated.
For each new added package listing, trigger the check_package.yaml job explained below.
For a pull request that changes or deletes package listings, flag it for manual review.

During manual review, if the PR looks good, do not merge it. Instead, add a special label that allows the bot to run check_package.yaml.
Checking packages
scan_pull_requests.yaml triggers check_package.yaml. Both are in https://github.com/r-releases.r-universe.dev, and both run as the current r-releases-app bot, so the former can send an informative payload to the latter. Steps in check_package.yaml:

Check that the JSON entry in the pull request is well-formed.
Check that the branch field in the JSON increments the package version.
Check that the release actually exists.
Run the R CMD check on all platforms that R-universe uses.
Run reverse dependency checks on all platforms that R-universe uses.
If any of the above checks fail, make an informative comment in the PR and automatically close it.
If all the above pass, push the source code of the release to a special r-releases archive repo, then call the API to merge the pull request and make a comment.

The archive repo
We can't entirely trust the original repo to host the user's original release permanently. The user has full control, so they could delete any releases they want over there. So before the pull request is merged, I propose that the release is copied to a special archive repo, possibly in a different GitHub org such as r-releases-archive.  So a PR review would like like this, in this order:

Check https//github.com/USER/REPO/releases/tag/v2.0.0.
Copy https//github.com/USER/REPO/releases/tag/v2.0.0 to the more trusted https//github.com/r-releases-archive/REPO/releases/tag/v2.0.0.
After the release is safely archived, actually merge the pull request to update the listing in https://github.com/r-releases/r-releases.

Where R-universe comes in
The text files in https://github.com/r-releases/r-releases can build the universe just like in the current prototype.
Deletions
A user may request to delete a package in a PR. If the package does have reverse dependencies, the bot should close the PR and ask the maintainer to contact the maintainer of the revdeps to have those revdeps taken down first. If the package can be safely removed, then the text file listing at https://github.com/r-releases/r-releases is deleted, but the archived repo still remains under https//github.com/r-releases-archive
Challenges

I have never triggered a GitHub actions job from another GitHub actions job. I think it's possible, I just don't know how at the moment.
In the "The archive repo" section above, it is possible that (2) succeeds and (3) fails. It is rare, but we would still need to think about how to handle that.

 Is the requirement of clean checks on submission good enough for this situation to take care of itself?
What about the catch-22 of trying to roll out breaking changes to a dependency and its revdep together? I have been blocked in the past and have had to temporarily suppress all testing.

For the first prototype of r-releases, we rushed to get the implementation working. For this part, let's pause and think for a while, and if we pursue it, work on it slowly. The current r-releases is good enough to demonstrate the concept and make it concrete. Just knowing how to use the bot helps tremendously.

Using an archive in the backend might even solve subdirectory issues like https://github.com/r-universe-org/help/issues/367.

On second thought: if we go this route, it is different enough that it should be in its own org, maybe r-production instead of r-releases. The current r-releases has value in the way it works right now: it strikes a middle ground between development and production. I definitely don't want to see this rendition of r-releases go away.

We will be even more informed after r-releases officially rolls out for what it is and we observe the consequences of our actions over potentially several months. Baby steps.

We will be even more informed after r-releases officially rolls out for what it is and we observe the consequences of our actions over potentially several months. Baby steps.

What I mean to say was that the combination of r-releases and r-universe has the potential to give us data that we never had before, especially if r-universe gets revdep checks and a cron-like schedule for all the checks it supports. And because r-universe is all about discoverability, we can get a sense of how often package compatibility issues really happen, along with ways to mitigate that.

Hmm... from https://github.com/r-universe-org/help/issues/363#issuecomment-1972105292 and https://github.com/r-universe-org/help/issues/363#issuecomment-1972346670, maybe none of the fancy Rube Goldberg-level automation I proposed in https://github.com/r-releases/help/issues/3#issue-2162110870 will be necessary at all.

#6 is a dramatically simpler and uniformly superior approach to ensure package quality and confidence in r-releases. Closing in favor of #6.


multi master transfer discussion

I have a scene when connecting 2 masters and 1 slave to crossbar,  I need to config MST1_ID_MASK = h'00  and MST2_ID_MASK = h'10,  and I see you judge the reture rch to which master based on IDs，so master 1 can only use ID: 0~15   and master 2 can only use 16 to 31.
but based on my understanding,   each master can specify different IDs and several masters can using same ID,  is this correct?

Hi Vincent,

based on my understanding, each master can specify different IDs

That’s true, each master must specify  and use a unique mask ID.

several masters can using same ID

Yes they can as long their masks are different.
I think the testbench I provide could help understand well how to setup that, specially the MasterDriver source. Internally, the outstanding request IDs are created by a simple counter on which the mask is applied before driving the AW/AR ID signals.
Basically what I got in mind when designing the IP was the user could create very simply the IDs by counting the ORs, then append extra MSBs (the ID mask) to the request ID. This solution provides an easy to implement circuit to drive back the completions.
Best,
Damien

Le 22 nov. 2021 à 08:02, vincentliu84 @.***> a écrit :

I have a scene when connecting 2 masters and 1 slave to crossbar, I need to config MST1_ID_MASK = h'00 and MST2_ID_MASK = h'10, and I see you judge the reture rch to which master based on IDs，so master 1 can only use ID: 0~15 and master 2 can only use 16 to 31.
but based on my understanding, each master can specify different IDs and several masters can using same ID, is this correct?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

issue is that if I set chanel 0 and channel 1 with same ID mask,   the test will hang,  if one is 0x0 and another is 0x10,  it can pass
parameter MST0_CDC = `MST0_CDC;
parameter MST0_OSTDREQ_NUM = `MST0_OSTDREQ_NUM;
parameter MST0_OSTDREQ_SIZE = `MST0_OSTDREQ_SIZE;
parameter MST0_PRIORITY = `MST0_PRIORITY;
parameter MST0_ROUTES = 4'b1_1_1_1;
parameter [AXI_ID_W-1:0] MST0_ID_MASK = 'h00;
parameter MST1_CDC = `MST1_CDC;
parameter MST1_OSTDREQ_NUM = `MST1_OSTDREQ_NUM;
parameter MST1_OSTDREQ_SIZE = `MST1_OSTDREQ_SIZE;
parameter MST1_PRIORITY = `MST1_PRIORITY;
parameter MST1_ROUTES = 4'b1_1_1_1;

//    parameter [AXI_ID_W-1:0] MST1_ID_MASK = 'h10;
parameter [AXI_ID_W-1:0] MST1_ID_MASK = 'h00;
so is there other place need to change?

The  bready and Rready is decided on this target signal,   when channel 0 and channel 1 are setting the same mask,
mst0_rch_targeted and mst1_rch_targeted are both 1'b1,  so ready signal will be set to channel 0
is this logic make sense?
assign o_rready = (mst0_rch_targeted) ? i_rready[0] :
                  (mst1_rch_targeted) ? i_rready[1] :
                  (mst2_rch_targeted) ? i_rready[2] :
                  (mst3_rch_targeted) ? i_rready[3] :
                                        1'b0;

so if my use case is that:
master channel 0 can use ID from 0 to 31,     master 1 can also use 0 to 31,  they will access the same slave memory
how to set this ID_MASKs
Thanks

a bug I found today is that,   when I set WID = h'10 on master 0
both master 0 and master 1 will get bresp signals,  the master 1 vip will give an error,
the issue is due to code below:
assign mst0_bch_targeted = ((MST0_ID_MASK & o_bch[0+:AXI_ID_W]) == MST0_ID_MASK);
assign mst1_bch_targeted = ((MST1_ID_MASK & o_bch[0+:AXI_ID_W]) == MST1_ID_MASK);
assign mst2_bch_targeted = ((MST2_ID_MASK & o_bch[0+:AXI_ID_W]) == MST2_ID_MASK);
assign mst3_bch_targeted = ((MST3_ID_MASK & o_bch[0+:AXI_ID_W]) == MST3_ID_MASK);

assign i_bvalid[0] = (mst0_bch_targeted) ? o_bvalid : 1'b0;
assign i_bvalid[1] = (mst1_bch_targeted) ? o_bvalid : 1'b0;
assign i_bvalid[2] = (mst2_bch_targeted) ? o_bvalid : 1'b0;
assign i_bvalid[3] = (mst3_bch_targeted) ? o_bvalid : 1'b0;

The waveform is uploaded here:
https://github.com/vincentliu84/hello-world/blob/master/waveform3.JPG

Hi Vincent,
are you sure you setup a different ID mask for both master and the AWID/ARID are correctly set according these values? That's the only reason I see without a complete wave and/or instance example that could explain this behaviour.
I tried in the doc to explain how to setup correctly the core to route the requests and their completions:
https://github.com/dpretet/axi-crossbar/blob/main/doc/architecture.md#routing-accross-the-switching-matrix
The ID mask is just extra bits to append to the AxIDs to identify correctly the master. for instance if your design needs 16 outstanding requests for both, you need 4 bits to reference them. Then you just need to append N extra bits to spot the master source. In my testcase, I use 16 OR and 0x10 for master 0, 0x20 for master 1, ..

I just change code to this format based on my use case, and it could pass,
assign mst0_bch_targeted = (o_bch[0+:AXI_ID_W] >= MST0_ID_MASK) && (o_bch[0+:AXI_ID_W] <= MST0_ID_MASK+8'h0f);
assign mst1_bch_targeted = (o_bch[0+:AXI_ID_W] >= MST1_ID_MASK) && (o_bch[0+:AXI_ID_W] <= MST1_ID_MASK+8'h0f);
assign mst2_bch_targeted = (o_bch[0+:AXI_ID_W] >= MST2_ID_MASK) && (o_bch[0+:AXI_ID_W] <= MST2_ID_MASK+8'h0f);
assign mst3_bch_targeted = (o_bch[0+:AXI_ID_W] >= MST3_ID_MASK) && (o_bch[0+:AXI_ID_W] <= MST3_ID_MASK+8'h0f);

Vincent,
I can't help you and you don't give me more info. Please provide the instance of the core with the parameters' value and possibly a complete waveform to let me visualise the request and were the test case really fail. My test bench may be buggy, but I can use several masters, up to 4, over 1 to 4 slaves so I really suspect here a wrong configuration.
Sorry far, the code you modified is not scalable to any number of OR, I can't update the code base with such suggestion.

Vincent,
I can't help you and you don't give me more info. Please provide the instance of the core with the parameters' value and possibly a complete waveform to let me visualise the request and were the test case really fail. My test bench may be buggy, but I can use several masters, up to 4, over 1 to 4 slaves so I really suspect here a wrong configuration.
Sorry far, the code you modified is not scalable to any number of OR, I can't update the code base with such suggestion.

thanks,   but I see it's solved since I change the mst*_bch_targeted
I changed my use case to:   there are 2 masters,  one ID range is 0 to 15,  another is 16 to 31,   no ID interleave now
the code is working well,
I will add more corner cases to see if I can find some other issue

Ok good to you, I'm still thinking you misconfigure the core or not use the right mask for the ID request based on the few information you provided.
Be aware I'll not provide support on code you modify by your own.

Something just pop up in my mind while waking up. Using a MASK_ID=0 is not allowed and most likely is the problem because it always activates the completion routing logic (0 & 4'h... = 0).
Please use a non-zero mask for your further tests, this will solve the issue. I'll add a recommendation in the doc about that and an assertion at compile time.
Damien

Something just pop up in my mind while waking up. Using a MASK_ID=0 is not allowed and most likely is the problem because it always activates the completion routing logic (0 & 4'h... = 0).
Please use a non-zero mask for your further tests, this will solve the issue. I'll add a recommendation in the doc about that and an assertion at compile time.
Damien

sure,  thanks for your advise, I will see if I can port my tb using your original code


Bug : can't change program language

ubuntu 16.04 x64
dbeaver-ce 4.0.8.deb
the program language always english, but my pc(ubuntu) is chinese default, and i wang to chinese to.
i used -nl command line such as "-nl zh","-nl zhcn","-nl zh-cn","-nl zh_cn", and delete "~/.dbeaver4/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi" before open dbeaver.
it's english again and again .
it's worked on my pc(win 10).
please give me a hand

Since version 4.0 all localization were disabled in DBeaver (because of outdated translations).
We going to enable them again after 4.2 version. This will require quite a bit of work (translation).

If this issue fixed in version 4.20? I try "-nl zh_cn" just now, can't work.

Hi, there~
Which version will enable Chinese localization? When will that version released?
Hope to see your reply soon~

I‘d like to do Chinese Localization for DBeaver.  I can also do some internationalization work.
Let me help you, OK?

Yes, we going to return localizations back.
Thank you,
I'll reply by email.

OK， looking forward to your reply~

i just update to 4.2.5,there is still english, how to use chinese UI?

run DBeaver with command line parameter -nl zh.
We plan we enable all localizations by default after 4.3 version.

Get !
Thank you.

Where can I change language now?
I'm using 4.3.1 version.
Thanks.

@HongJheLi
In 4.3.x all localizations were turned on so you should just see it.
If not then you can use command line parameter -nl.
UI language selector isn't yet working (see #2458)

This solution have a problem: Each time the DBeaver got an update, the config file come to default.
There is a way to store that config in the local environment?


SEO Work on top dev center articles

Adding more variants for .NET, .NET Core, ASP.NET, and ASP.NET Core to hopefully affect some increase in traffic to these pages. Also added "Azure" and "web apps" in a few more places, and did some minor editing as I came across those details.
Ignore the repeated maintainContext stuff (it was a leftover in the branch I was using, and it's identical to the changes already merged).

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/TOC.yml
:white_check_mark:Succeeded
View

docs-ref-conceptual/dotnet-howto-migrate-app-service.md
:white_check_mark:Succeeded
View

docs-ref-conceptual/dotnet-samples.md
:white_check_mark:Succeeded
View

docs-ref-conceptual/dotnet-sdk-azure-get-started.md
:white_check_mark:Succeeded
View

docs-ref-conceptual/dotnet-tools.md
:white_check_mark:Succeeded
View

docs-ref-conceptual/dotnet-tutorials.md
:white_check_mark:Succeeded
View

docs-ref-conceptual/index.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@CamSoper Another PR to review, this time SEO work.

@kraigb I'm actually working on a huge update for dotnet-howto-migrate-app-service.md as we speak. I'll merge this, but be aware that a complete rewrite of that doc is coming within days. Everything else is great!

No problem; I'm happy to take a look when you have the revision done.


Clicking on amikacin to get to antibiotic landing page takes me to cefotaxime

I am trying to get to the landing page for Amikacin, so I clicked on the page for a particular genome and then on the antibiotic link:

But the page that open up is for cefotaxime:

And no, its not listed as a synonym.  I checked that.

What are the urls for each page? I guess you have confused with other tabs, because it passes antibiotic name through the url, so you should be able to see "amikacin" in the url when you open the antibiotic page through the "A" button in the green bar.

Technical description is posted in #1480

fixed and available on prod.


Fixing the error of loading VOX models.

In the previous change, the offset was skipped when reading the file, so loading the VOX model did not work. Fixed it.

@warzes Nice! Thank you very much for the fix! 👍😄


update get_percentiles to take in an array

Reduction in histogram time by refactoring get_percentiles:
Old time:
Total time: 2.57195 s
File: dataprofiler/profilers/numerical_column_stats.py
Function: _add_helper_merge_profile_histograms at line 95

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
    95                                               @BaseColumnProfiler._timeit(name="histogram_and_quantiles")
    96                                               @profile
    97                                               def _add_helper_merge_profile_histograms(self, other1, other2):
    98                                                   """
    99                                                   Adds histogram of two profiles together
   100
   101                                                   :param other1: profile1 being added to self
   102                                                   :type other1: BaseColumnProfiler
   103                                                   :param other2: profile2 being added to self
   104                                                   :type other2: BaseColumnProfiler
   105                                                   :return: None
   106                                                   """
   107                                                   # get available bin methods and set to current
   108        66        126.0      1.9      0.0          bin_methods = list(set(other1.histogram_bin_method_names) &
   109        33         47.0      1.4      0.0                             set(other2.histogram_bin_method_names))
   110        33         18.0      0.5      0.0          if not bin_methods:
   111                                                       raise ValueError('Profiles have no overlapping bin methods and '
   112                                                                        'therefore cannot be added together.')
   113        33         22.0      0.7      0.0          self.histogram_bin_method_names = bin_methods
   114
   115        66         78.0      1.2      0.0          for i, method in enumerate(self.histogram_bin_method_names):
   116        99      12801.0    129.3      0.5              combined_values = other1._histogram_to_array(
   117        66      12345.0    187.0      0.5                  method) + other2._histogram_to_array(method)
   118        66      37709.0    571.3      1.5              bin_counts, bin_edges = self._get_histogram(
   119        33         12.0      0.4      0.0                  combined_values, method)
   120        33         88.0      2.7      0.0              self.histogram_methods[method]['histogram']['bin_counts'] = \
   121        33         49.0      1.5      0.0                  bin_counts
   122        33         40.0      1.2      0.0              self.histogram_methods[method]['histogram']['bin_edges'] = bin_edges
   123
   124                                                   # Select histogram: always choose first profile selected method
   125                                                   # Either both profiles have the same selection or you at least use one
   126                                                   # of the profiles selected method
   127        33         47.0      1.4      0.0          self.histogram_selection = other1.histogram_selection
   128        33    2508570.0  76017.3     97.5          self._get_quantiles()

New:
Total time: 0.079271 s
data-profiler/dataprofiler/profilers/numerical_column_stats.py
Function: _add_helper_merge_profile_histograms at line 96

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
    96                                               @BaseColumnProfiler._timeit(name="histogram_and_quantiles")
    97                                               @profile
    98                                               def _add_helper_merge_profile_histograms(self, other1, other2):
    99                                                   """
   100                                                   Adds histogram of two profiles together
   101
   102                                                   :param other1: profile1 being added to self
   103                                                   :type other1: BaseColumnProfiler
   104                                                   :param other2: profile2 being added to self
   105                                                   :type other2: BaseColumnProfiler
   106                                                   :return: None
   107                                                   """
   108                                                   # get available bin methods and set to current
   109        66        143.0      2.2      0.2          bin_methods = list(set(other1.histogram_bin_method_names) &
   110        33         57.0      1.7      0.1                             set(other2.histogram_bin_method_names))
   111        33         14.0      0.4      0.0          if not bin_methods:
   112                                                       raise ValueError('Profiles have no overlapping bin methods and '
   113                                                                        'therefore cannot be added together.')
   114        33         23.0      0.7      0.0          self.histogram_bin_method_names = bin_methods
   115
   116        66         99.0      1.5      0.1          for i, method in enumerate(self.histogram_bin_method_names):
   117        99      15658.0    158.2     19.8              combined_values = other1._histogram_to_array(
   118        66      14060.0    213.0     17.7                  method) + other2._histogram_to_array(method)
   119        66      42297.0    640.9     53.4              bin_counts, bin_edges = self._get_histogram(
   120        33         16.0      0.5      0.0                  combined_values, method)
   121        33        102.0      3.1      0.1              self.histogram_methods[method]['histogram']['bin_counts'] = \
   122        33         53.0      1.6      0.1                  bin_counts
   123        33         45.0      1.4      0.1              self.histogram_methods[method]['histogram']['bin_edges'] = bin_edges
   124
   125                                                   # Select histogram: always choose first profile selected method
   126                                                   # Either both profiles have the same selection or you at least use one
   127                                                   # of the profiles selected method
   128        33         63.0      1.9      0.1          self.histogram_selection = other1.histogram_selection
   129        33       6641.0    201.2      8.4          self._get_quantiles()

The idea looks fine to me. However, with small number of values, it's not clear it improves from the current method. Can you run evaluation of the current and the new methods on these data
Normal data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 6, 6, 6, 6]
[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
[1, 2, 3, 3, 3, 3, 3, 3, 4, 5]

Sparse data
[1, 10, 100, 1, 10, 100, 1, 10, 100]
[1, 1, 10, 10, 100, 100, 100, 100, 100]
[1, 1, 1, 1, 1, 10, 10, 100, 100]
[1, 1, 10, 10, 10, 10, 10, 100, 100]

(For each kind of data, we have data skewed to the right, left, central, and uniformly distributed.)

np.quantile:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
25: 3.25, 50: 5.5, 75: 7.75

[1, 2, 3, 4, 5, 6, 6, 6, 6, 6]
25: 3.25, 50: 5.5, 75: 6.0

[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
25: 1.0, 50: 1.5, 75: 3.75

[1, 2, 3, 3, 3, 3, 3, 3, 4, 5]
25: 3.0, 50: 3.0, 75: 3.0

[1, 10, 100, 1, 10, 100, 1, 10, 100]
25: 1.0, 50: 10.0, 75: 100.0

[1, 1, 10, 10, 100, 100, 100, 100, 100]
25: 10.0, 50: 100.0, 75: 100.0

[1, 1, 1, 1, 1, 10, 10, 100, 100]
25: 1.0, 50: 1.0, 75: 10.0

[1, 1, 10, 10, 10, 10, 10, 100, 100]
25: 10.0, 50: 10.0, 75: 10.0

CURRENT:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
25: 2.125, 50: 5.5, 75: 7.75

[1, 2, 3, 4, 5, 6, 6, 6, 6, 6]
25: 2.666666666666667, 50: 5.166666666666667, 75: 5.166666666666667

[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
25: 1.5, 50: 1.5, 75: 3.5

[1, 2, 3, 3, 3, 3, 3, 3, 4, 5]
25: 3.0, 50: 3.0, 75: 3.0

[1, 10, 100, 1, 10, 100, 1, 10, 100]
25: 9.25, 50: 9.25, 75: 83.5

[1, 1, 10, 10, 100, 100, 100, 100, 100]
25: 10.9, 50: 70.30000000000001, 75: 70.30000000000001

[1, 1, 1, 1, 1, 10, 10, 100, 100]
25: 5.125, 50: 5.125, 75: 9.25

[1, 1, 10, 10, 10, 10, 10, 100, 100]
25: 9.25, 50: 9.25, 75: 9.25

NEW:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
25: 2.875, 50: 5.5, 75: 8.125

[1, 2, 3, 4, 5, 6, 6, 6, 6, 6]
25: 3.083333333333333, 50: 5.166666666666667, 75: 5.583333333333334

[1, 1, 1, 1, 1, 2, 3, 4, 5, 6]
25: 1.5, 50: 2.0, 75: 4.500000000000001

[1, 2, 3, 3, 3, 3, 3, 3, 4, 5]
25: 3.0833333333333335, 50: 3.5, 75: 3.9166666666666665

[1, 10, 100, 1, 10, 100, 1, 10, 100]
25: 7.1875, 50: 13.375, 75: 87.62499999999997

[1, 1, 10, 10, 100, 100, 100, 100, 100]
25: 12.137500000000001, 50: 82.17999999999998, 75: 91.08999999999999

[1, 1, 1, 1, 1, 10, 10, 100, 100]
25: 4.7125, 50: 8.425, 75: 16.46875

[1, 1, 10, 10, 10, 10, 10, 100, 100]
25: 6.303571428571429, 50: 11.607142857142858, 75: 16.910714285714285

Will be updated once https://github.com/capitalone/DataProfiler/pull/155 is merged.


Extensions

So Minestom CE removed extensions, how can I extend Minestom then? Is there a new "Plugin"/Extension System?

https://github.com/hollow-cube/minestom-ce-extensions


Consider Integrating Vocode

Hello Team,
I recently came across your project and was impressed by its capabilities. As a developer working on the Vocode project, I wanted to suggest integrating Vocode into your system. Vocode is an open-source tool designed for building voice-based LLM agents, optimized for real-time streaming conversations.
I believe Vocode could be a valuable addition to your project, enhancing both performance and scalability. Please feel free to check out our documentation and explore how Vocode might fit into your workflow: Vocode Local Conversation.
Looking forward to any thoughts or questions you might have!
Best regards,

Hey @arpagon, thanks for your message and great that you want to collaborate. Vocode and BUD-E indeed seem to have quite similar goals in achieving a fast and local AI conversation. In the future development of our project, we commited to some aspects:

We try to avoide dependencies to other libraries and toolkits as much as possible to ensure an easy installation and to have full control over the data flow through the pipeline.
We eventually want to combine STT, LLM and TTS to one model that is able to process and stream input and output on a per-token level to ensure fast responses.

I was looking at the documentary you provided and it seems that it is more like a toolkit to combine STT, LLM and TTS models but keeping them seperated and modular. This is of course also an absolutely valid strategy, but I am not sure if this approach will agree with the goals we are aiming at currently.
If you are also working on projects to connect the different models more closely or if you have any ideas how to combine both appraoches in a meaningful way, please let me know and it would of course be great to discuss a possible collaboration!

Thank you for reaching out and sharing your insights. I understand and appreciate your point.
I believe there are valuable opportunities for future collaboration. Perhaps, as our projects evolve, we might find innovative ways to merge our approaches or work on joint aspects that align with both our goals.
I am keen on keeping the lines of communication open for any potential collaborative opportunities or idea exchanges that might benefit us both. The field of AI conversation is rapidly evolving, and I believe that by sharing insights and learning from each other's approaches, we can contribute significantly to this area.
Looking forward to potential collaborative ventures in the future.