Print only to console

+1 for the change, it works like a charm.
Would be great if this could be integrated in the oficcial upstream?

This was written mostly as a quick hack to test SimenB/csslint-stylish#1, needs docs and test before merge.
But thanks for bringing it up, I'd forgotten all about it

Great idea, but I'd suggest a configuration syntax similar to grunt-contrib-jshint or grunt-eslint as you probably dont need the option for multiple console-formatters at the same time^^


Fix compilation issues for PGI compiler

This PR fixes two issues the PGI C++ compiler has (at least until version 18.1) when compiling cpptoml.h:

Shadowing class value with local variable value
Use of auto does sometimes not compile.

These issues seem to be specific to the PGI compiler since they do not occur with other major compilers (GCC, Clang, Intel are fine).

Thanks!


Run submit mode for KITTI dataset

I am testing in submit mode using the pretrained data "data kitti2012_resmatch_fast.zip"
I used the following command:
th main.lua -ds kitti -a submit -m fast  -mc resmatch -mcnet ../storage/net/mc/kitti_resmatch_fast_LL_rgb_all_net.t7 -dispnet ../storage/net/disparity/net_reflective_kitti_resmatch_fast_LL_rgb_all_net.t7
However, I got the error "C++ exception".
Does I use the correct command?
Thank you for your help.

I came across the same problem, have u fixed it already?

Can you please give me more information? what C++ function throws the exception?

This error comes from "function Runner:submit(samples)" in file runnner.lua
Specifically, it comes from the line code of this function: adcensus.writePNG16(pred_img, img.height, img.width, s)
where 's' is the path for saving.
To solve the above problem, you simply take care of paths 's' for saving. You may need to change the code as follows:
if self.dataset.name == 'kitti' then
path = '../out'
elseif self.dataset.name == 'kitti2015' then
path = '../out/disp_0'
end
Best regards.

Hi, I would like to be able to test some images and have the disparity map of some of these, but there's nothing about it on the Readme file. Anyone knows how to generate them?
Tks.


feat: update ApprovalRequest type from string to ApprovalType

Explanation
We are receiving a typescript error in metamask-extension when comparing ApprovalRequest.type value to ApprovalType values (example: https://github.com/MetaMask/metamask-extension/pull/24182)

References

Changelog

@metamask/approval-controller

feat: Updates ApprovalRequest type from string → ApprovalType
build: Adds @metamask/controller-utils as a dependency

Checklist

[ ] I've updated the test suite for new or updated code as appropriate
[ ] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
[ ] I've highlighted breaking changes using the "BREAKING" category above as appropriate

@digiwand The error you posted above is fairly common when checking whether a value is a member of an array. The solution that we've typically used is to widen the type of the array before checking inclusion. For instance you could do:
const confirmationRedesignTypes: string[] = ConfirmationRedesignTypes;
return confirmationRedesignTypes.includes(pendingConfirmation.type);

I'm curious whether that might be a better solution here rather than narrowing the type of pendingConfirmation.type.

thanks @mcmire! interesting workaround. For the PR I went with
export const ConfirmationRedesignTypes: (ApprovalType | string)[] = [
  ApprovalType.PersonalSign,
  ApprovalType.EthSignTypedData,
];

@digiwand I had something slightly different in mind, but I'll comment on your PR.
For this PR though, the effect of this change now seems to have shifted. There doesn't seem to be a functional change — the type is still effectively the same — but now we're just adding some documentation to remind ourselves what we need to do to avoid the string type. Is that fair?


Support GitHub Actions that aren't exclusively in the .github directory

Is there an existing issue for this?

[X] I have searched the existing issues

Feature description
It's a fairly common scenario where an organization might centralize workflows / actions into a common repository, to make a "private action marketplace" if you will. Referencing these actions from a separate repo would look like:
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: NPM Setup
        uses<EMAIL_ADDRESS>
As you can see here, in the my-org/github-actions repo, the path to the composite action is not .github/**. Instead, it's organized into a team level basis. From the docs, it appears that dependabot exclusively updates values in .github/**, which means composite actions will be missed. Can we make this path more configurable?

https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#directory

@nschonni Thanks, I've seen that doc. It explicitly states:

For GitHub Actions, set the directory to / to check for workflow files in .github/workflows.

Which is exactly the opposite of what this issue is asking about.

This is kinda related to https://github.com/dependabot/dependabot-core/issues/6894

@DaleMckeown IIUC it's actually not...  this is about the location of the actual actions files, ie, the location of the package manifests vs that's about the dependabot.yml config that Dependabot uses.

@alexrosenfeld10 isn't this a duplicate of https://github.com/dependabot/dependabot-core/issues/5970, which was resolved by https://github.com/dependabot/dependabot-core/pull/6189 ??
If not, can you please clarify how this is different?

I'm not sure TBH as I didn't work on that PR, but shouldn't be difficult to try both and see which one works.

Sure it wouldn't be difficult but it's a reasonable thing to expect documentation to be clear about something like this. I guess I'll just give it a whirl

Agreed! The great thing is this is all open source, we'd happily accept a PR if you care to pay it forward by improving the docs based on what you discover...
You're actually the best person here because all you have to do is think "What would I have wanted in the docs that would have kept me from wasting time creating this issue?" 🙂

Sure, when I'm feeling better and have time I'll get to it


feat: add webassembly component model

This commit adds a webassembly component module for the policy engine.
The motivation for this is to be able to run the policy engine in any webassembly runtime that supports the new WebAssembly Component Model.
This commit include examples of running the policy engine in JavaScript, Python, and Rust.
Closes: https://github.com/seedwing-io/seedwing-policy/issues/227

but maybe you move stuff from README.md to some place in docs/ so it gets part of docs.seedwing.io

Ah good point! I'll move the contents do docs. Thanks!


[unit_test.exe] failures in end_to_end.cpp

Describe the bug
Seeing three failures in the unit test suite, details in section below.
OS information
No response
Steps taken to reproduce bug
Run .\unit_test.exe
Expected behavior
Test should not fail.
Actual outcome

bad_map_name-native
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(988)
...............................................................................
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(566): FAILED:
REQUIRE( result == -22 )
with expansion:
-2 == -22

verify bad1.o
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(1066)
...............................................................................
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(1062): FAILED:
REQUIRE( (error_message != nullptr && std::string(error_message) == expected_error_message) )
with expansion:
false

verify bad2.o
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(1073)
...............................................................................
D:\ebpf-for-windows\tests\end_to_end\end_to_end.cpp(1062): FAILED:
REQUIRE( (error_message != nullptr && std::string(error_message) == expected_error_message) )
with expansion:
false
Additional details
No response

@rectified95 need more details. Will reach out.

@rectified95 can you share more details about the failures. These tests run in CICD everyday.

@rectified95 if this issue is resolved, is it ok to close this issue?

@saxena-anurag Looks like this was a one-off if the CI has been passing, so this is ok to close.


WIP: Users / Organisations management

First try to solve #12
Fix some permissions escalation
Add an alternative molecule test with 4.6.3 version to validate that is functional with 4.6.3 and >5.0
Comments welcome
Feel free to ask if something is not clear
Too many jinja filter tricks FMPOV but tried to write it to be readable and understandable.
Organisations informations can't be updated right now.
Users can be updated ( email and login need to be updated separately in 2 run, if not, it will result in a new user )
Users can be linked to multiple organisations with different role
Users are linked to organisation 1 by default even if some organisations are specified ( need to update this to unlink them of organisation 1 if there are some organisations specified inside the accounts to only let the specified ones)
What i want / is needed to add:

async where it is possible
clean users / organisations not managed by ansible ( but users who have update both login/email by the UI will be deleted and recreated with the original informations. Seems it is not possible to denied the user to update his login itself through the UI.... )
link dashboard to specified organisations
link datasource to specified organisations

Even if i tried it a few times, some unknown bugs surely exist ^^
Regards,

I am wondering one thing. Is there any information on which grafana versions are still supported? I mean ones which get security patches and so on.
Asking because if there is no such thing and they only support latest release, then tests for 4.6.3 are unnecessary. I want to be as close as possible to their support model and to deprecate things when grafana deprecates them. Otherwise this role could end up unecessary complicated. Those tests already are running more than 30 minutes.

Don't see official information on that too, but since there is no minor release since 4.6.3 for the 4.x branch, i think you could assume there will be no more releases anymore or will be not in a short time.
I could remove the 4.6.3 test and force push without it if you would like

I think removing 4.x support is a good way to go.

Tests for 4.6.3 was removed.
Concerning this part :
Users are linked to organisation 1 by default even if some organisations are specified ( need to update this to unlink them of organisation 1 if there are some organisations specified inside the accounts to only let the specified ones)

When you start to manage organizations, i see the orgId 1 aka 'Main org.' as a sandbox organization.
This orgId:1 could be used as a sandbox to :

tests data-sources of other organizations
create dashboards related to those data-sources before provide them to the final users
everything you want to test without be seeing by other users
So, the last thing i want to add in this PR for now, is a task who remove every users from orgId 1 that are not "isGrafanaAdmin": true if there is any "organisations" defined in "grafana_organisations"

Any thoughts ?
Concerning this part:
What i want / is needed to add:

async where it is possible
clean users / organisations not managed by ansible ( but users who have update both login/email by the UI will be deleted and recreated with the original informations. Seems it is not possible to denied the user to update his login itself through the UI.... )
link dashboard to specified organisations
link datasource to specified organisations

I think it will be in a next PR because those features could be add later.

I dropped some comments. If you need some advanced things like:
    - _grafana_accounts_organisations_links.results | sum(attribute='json', start=[])
      | selectattr('email', 'equalto', item.0.email)
      | selectattr('orgId', 'equalto',
          (
            _grafana_organisations.json
            | selectattr('name', 'equalto', item.1.name)
            | map(attribute='id')
            | unique
            | join()
            | int
          )
        )
      | list
      | length == 0

why not just assign it to a variable (fact) in preflight.yml and later use that variable? It produces much cleaner codebase.

I spent many time to asking myself why i didn't write custom filters to reduce list and/or achieve orgId lookup etc... and don't really remember why i bang my head a few times to achieve it only with jinja filters :rofl: .....
Anyway, for now, it works and could be add in a next commit / PR ^^

Just to clarify.
Things like this:
  with_items: "{{range(
                        1,
                        (
                          (_grafana_accounts_first_page.json.totalCount / grafana_accounts_perpage )
                          | round(0,'ceil')
                          | int
                        ) + 1
                      )
                      | list
              }}"

are a little unreadable and extensive usage of this just to have grafana organization management is not a good thing. Especially that most of those are manipulating response from grafana API. It would be much better to write a simple ansible module for this than create hacks which lead to unmaintainable codebase.
Most of ansible tasks in this role which are using grafana API could be now replaced by ansible modules but they are here just because I don't have time to replace them :smile:

I spent many time to asking myself why i didn't write custom filters to reduce list and/or achieve orgId lookup

It's not about custom filters. The whole thing could be done in ansible modules. One module (grafana_organizations?) could manage organizations and another one accounts. This would greatly simplify role and move whole API request processing to python which is more suited for this task.
Sorry for not being clear. It was a long day...

As a bonus you could move those modules to upstream Ansible :stuck_out_tongue:

No worries, if needed, let chit chat of this on IRC someday.
But the day(s) a wrote those modifications, i definitely look up at the actual module on ansible and the things have came to my mind were :

if you wanna do it with "native" modules, you could drop the compatibility with ansible < 2.5
if you wanna do it with "native" modules, you could drop the users / organisations for now
does CloudAlchemy would be ok to use custom modules into their role ?
If CloudAlchemy want to preserve the compatibility with ansible < 2.5, it will require to eventually "vendored" the modules present into 2.5 +
is there already any module who require to use the result of another module ? how to do it ? Because we need to know the users already presents, the organisations already presents etc... to compare and do only the needed updates without to call the module as much as users/organisations are describe into the accounts dict etc...

Not sure i will have the time/will to recode all of this mechanism with custom modules, but i eventually will do it to upgrade my skills into python ^^

drop the compatibility with ansible < 2.5

No problem :)

does CloudAlchemy would be ok to use custom modules into their role ?

Yup, no problem with that.

If CloudAlchemy want to preserve the compatibility with ansible < 2.5, it will require to eventually "vendored" the modules present into 2.5 +

Nah, let's drop 2.5

is there already any module who require to use the result of another module

I don't think so. It might be better to incorporate this into one module not into 2.

Sorry I haven't had much time to test this "jinja filter kung-fu" (I like the name :+1: )

will you be open to merge this request if we add some custom filters to do user -> id , orgs -> id lookup

If they will cause that a code is cleaner and more understandable then yes.

I've been looking for this functionality to use with LDAP and am sad to see it autoclosed


Deprecate GenericStub()::Call for multi-threaded use

This was deprecated in practice six months ago, but we should actually mark it deprecated. Using the single-phase call is too error-prone, and our tests were being used as examples.

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Could you also update the grpc_cli related uses in test/cpp/util? Thanks

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_pump.BM_PumpStreamServerToClient_SockPair__8.opt.new: 1

[microbenchmarks] No significant performance differences

Sure, looks like it's also used in filter_end2end_test... I'll take care of these

I made the suggested changes. PTAL. Thanks!

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_pump.BM_PumpStreamServerToClient_SockPair__1.opt.new: 1
    bm_fullstack_streaming_pump.BM_PumpStreamServerToClient_SockPair__8.counters.old: 1

[microbenchmarks] No significant performance differences


Update changelog to add missed changelog

Should we still maintain the changelog in this repo?
These information has been duplicated in many places: commit history, github release, blog.
Maybe using github or gitea's wiki page to maintain the changelog is better and easier?

Should we still maintain the changelog in this repo?
These information has been duplicated in many places: commit history, github release, blog.
Maybe using github or gitea's wiki page to maintain the changelog is better and easier?

I think some people would like to view the changelogs in the same repository. Maybe we can just store changelogs in the main branch and will not store any release/* branch.

I think some people would like to view the changelogs in the same repository.

Who? The changelog is out-of-data for almost one year, nobody ever notices.

Changelog in the GitHub releases only may be enough. As I see it, it's duplicate information. Of course this presents a certain locking into the GitHub platform, but I assume GitHub releases could be migrated.

Maybe just giving a link to the release page is enough.


Fails over SSH

If I try and run this over SSH it fails when calling altool with message "Error: code -1017 (Unable to upload your app for notarization. You must specify '--primary-bundle-id'.)"
The exact same app/settings etc. all works fine if called locally on the machine instead of over SSH.
Is it possible to allow an ENV variable or similar that can force a primary-bundle-id to be passed to altool call?

Nevermind, I tracked this down to an issue in vue-cli-plugin-electron-builder-notarize - its not an issue with electron-notarize itself


Technical: add version badge

Having the version badge on the homepage made for a very useful quick check - see https://github.com/WCRP-CMIP/CMIP6_CVs/

Adding the same to this repo would be very useful


Build is failing due to jest (create-react-app) when using react as the frontend module

Expected Behaviour
Build should complete successfully including the "npm test" goal defined in the frontend-maven-plugin config.
Actual Behaviour
Build is failing due to npm ERR.
Reproduce Scenario (including but not limited to)
Steps to Reproduce
1.) Create project using latest version of archetype 24
2.) Use "react" in the "frontendModule" property
3.) Run "mvn clean install"
Platform and Version
OS: Windows 10 Pro
Java: Oracle JDK 11
I think it will be reproducible on any system as it is related to create-react-app's npm configuration.
Sample Code that illustrates the problem
Logs taken while reproducing problem
Getting below error while running "mvn clean install"
` >react-scripts test
● Validation Error:
Watch plugin jest-watch-typeahead/filename cannot be found. Make sure the watchPlugins configuration option points to an existing node module.
Configuration Documentation:
https://jestjs.io/docs/configuration.html
npm ERR! Test failed.  See above for more details.
`

There are multiple npm issues (might be in create-react-app) if we use archetype 24 now. Other than the above issue in npm test, there is babel version issue as well.
In the end, I found that the archetype v25 has been release in Jan on mvnrepository and everything is working fine with that. It would be great if you guys can update the README.md file to latest version.

Hi @ankur-rajput, thank you for reporting this issue. Nice to hear that everything is working as expected in v25. I update the readme in https://github.com/adobe/aem-project-archetype/commit/1338f36ce0c1107561eae46267df2208103aad9b


Bugfixes for issue 567

Bugfixes for https://github.com/ipython/ipywidgets/issues/567

[x] When drop list opens, make current selection active.
[x] Scroll to active item in a drop list if it is not visible.

cc: @jasongrout @SylvainCorlay

Awesome, thanks!


Adding a grid based xarray data interface

As the title suggests this PR adds an xarray interface, which will allow working with large gridded datasets. It is not quite complete, so should not be merged yet, but it's functional and there are just a few more issues to iron out before I can add unit tests and merge it.
What's still missing?

[ ] Multi-dimensional aggregate/reduce
[x] Add dimension support
[ ] Reindex support for dropping constant dimensions
[x] Unit tests

I would be interested in helping you finish off this PR to learn a bit more about xarray. Though there seems to be merge conflicts now?

I can resolve the merge conflicts now. As for this PR, it might be worth waiting until a multi-dimensional groupby has been merged into xarray (https://github.com/pydata/xarray/pull/818).

The multi-dimensional groupby was just merged and I think Stephan is targeting an xarray release for next week, so should we try to get this into 1.5.1?

The multi-dimensional groupby was just merged and I think Stephan is targeting an xarray release for next week, so should we try to get this into 1.5.1?

If the interface is complete and we can support the upcoming xarray release (I suppose we can test against a dev version) then yes, I think it would be good to get in for 1.5.1.

Sounds good.  It would be great to be able to promote this feature at SciPy!

Deferring support for aggregate, sample, reduce and reindex. About to add tests and then ready to merge.

As the PR build passed, looks good and I'll merge it now.


lsp-sample typescript not building

Anyone else have this issue? When I run command+shift+b on Mac its not compiling the typescript into the "out" folder.

I have a workaround which is tedious. It lets me build it if I open /client or /server in vscode but not if I open the root of the project (/lsp-sample). Its a bit strange because its only recently started doing this behavior.

This works for me without a problem. Anything special in the terminal associated with the watch task?

@Kelbie
hi~  Why after I compiled lsp-sample into vsix, I installed it in my local vscode but didn't check the txt file ? But in the test, I can verify the txt file. Do I need to do some other work after installing the plugin?

Actually no, do you see any problem in the Language Server Example output channel

That means you filter out the vscode-languageclient node module when building the VSIX. VS Code extensions need to ship their depending node modules.


Login if have only cookies

Is it possible to login to netflix in kodi addon , if:

i have only cookies in chrome (i am logined in chrome);
i don't have user and password;
Is it possible?

no it is no possible


README?

http://hackage.haskell.org/package/status-notifier-item says

Please see the README on Github at https://github.com/IvanMalison/status-notifier-item#readme

but there is no README. As a clueless user who is trying to upgrade from System.Taffybar.Systray (which worked without additional tools) I am a bit lost.

@nomeata Yes, this should have a README.
The relevant README is in https://github.com/taffybar/gtk-sni-tray
this library is basically just support for that, but it also include the status-notifier-watcher binary. basically all you should need to do is run that before starting taffybar.
Alternatively, you can use https://github.com/taffybar/taffybar/blob/62e399d0766ce22109f37257c5ed1968350b5ffb/src/System/Taffybar/Widget/SNITray.hs#L61
There are two problems with this approach

You have to be very careful to start any programs that need to register tray icons AFTER taffybar is initialized
The watcher dies whenever taffybar dies, so if you restart taffybar, none of the tray icons will be registered anymore

I then used sniTrayThatStartsWatcherEvenThoughThisIsABadWayToDoIt, but again, I felt a bit in the dark about why it’s a bad way. Maybe add these two points to the docs of sniTrayThatStartsWatcherEvenThoughThisIsABadWayToDoIt?


R: 3.2.4 -> 3.3.2

Motivation for this change
Updates R from 3.2.4 to 3.3.2
Unfortunately it seems as though the tests are broken upstream; I can't seem to get them to pass outside of the Nix store either. The failure seems to be related to dependency on the "MASS" package, which isn't available in the build environment (and the tests don't seem to attempt to install it). R-3.3.1 from the Gentoo ebuild fails in the same way.
Despite this the resulting interpreter seems to work, and reverse dependencies build and pass their tests.
Things done

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

[x] NixOS
[ ] macOS
[x] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Have you reported those test failures upstream?

I wasn't able to find a relevant bug upstream, and I'd like to build some additional insight as to exactly why these simple-seeming tests fail before reporting. That said, perhaps that's better left to the upstream maintainers.
Unfortunately I've been rather busy this past week. I should be able to provide a more comprehensive report to upstream in the next few days.

If I had to guess, I'd speculate that the tests are failing because we compile with --recommended-packages.

Fixed with https://github.com/NixOS/nixpkgs/pull/22817


Use littler to install R packages

Ahh, we don't have to make our own script. We can add littler via Conda, then:
install.R -r https://cloud.r-project.org/ biomod2
installGithub.R BigelowLab/rasf BigelowLab/ohwobpg

Originally posted by @abkfenris in https://github.com/oceanhackweek/jupyter-image/pull/17#issuecomment-672964691

Nice! But we need that in the postBuild anyways, right?

Ya, we would still need something in postBuild with littler.
I think the problem that it would help solve is that the current Rscript commands don't appropriately explode when there is an error.

I'm almost done with the new image. It will have littler there.


Fix 500 error when omitting counter_asset_type param for trade endpoint

According to https://www.stellar.org/developers/horizon/reference/endpoints/trades.html
The counter_asset_type should be optional.
The main changes are to remove:
	HasBaseAssetFilter    bool
	HasCounterAssetFilter bool

which is added by https://github.com/stellar/go/pull/125/files
cc @tomerweller
Thus no error would be thrown here:
https://github.com/stellar/go/blob/7d8a7b7b744f11acc005f1c4199460bb74868eb5/services/horizon/internal/actions_trade.go#L76
Test Case
https://horizon.stellar.org/trades/?base_asset_type=native&counter_asset_code=SLT&counter_asset_issuer=GCKA6K5PCQ6PNF5RQBF7PQDJWRHO6UOGFMRLK3DYHDOI244V47XKQ4GP&limit=3&offer_id=0&order=asc&resolution=300000
or
http://localhost:8000/trades/?base_asset_type=native&counter_asset_code=SLT&counter_asset_issuer=GCKA6K5PCQ6PNF5RQBF7PQDJWRHO6UOGFMRLK3DYHDOI244V47XKQ4GP&limit=3&offer_id=0&order=asc&resolution=300000
Before code change
{
  "type": "https://stellar.org/horizon-errors/server_error",
  "title": "Internal Server Error",
  "status": 500,
  "detail": "An error occurred while processing this request.  This is usually due to a bug within the server software.  Trying this request again may succeed if the bug is transient, otherwise please report this issue to the issue tracker at: https://github.com/stellar/go/services/horizon/internal/issues. Please include this response in your issue."
}

After code change
{
  "type": "https://stellar.org/horizon-errors/bad_request",
  "title": "Bad Request",
  "status": 400,
  "detail": "The request you sent was invalid in some way",
  "extras": {
    "invalid_field": "counter_asset_type",
    "reason": "invalid asset type: was not one of 'native', 'credit_alphanum4', 'credit_alphanum12'"
  }
}

I think you based your changes off of the wrong branch (looks to be your trade client work).  Please rebase and shorten the PR.

https://github.com/michaelran16/go/pull/1


ENH: Accelerate matrix normal sampling using matmul

Reference issue
None
What does this implement/fix?
Improves performance and readability of scipy.stats._multivariate.matrix_normal_gen.rvs.
Additional information
This PR introduces changes so that the tensor contractions necessary to sample from a matrix normal distribution rely on np.einsum with the optimize=True flag, instead of a preset order. In addition to improving readability, this leads to substantial performance gains.
For instance, to generate size samples from an n x p matrix normal distribution, the current implementation requires:
Size = 10

einsum
p=10
p=100
p=1000

n=10
0.0
0.001
0.003

n=100
0.0
0.001
0.024

n=1000
0.002
0.023
0.473

master
p=10
p=100
p=1000

n=10
0.0
0.0
0.005

n=100
0.001
0.009
0.107

n=1000
0.193
1.709
20.081

Size = 100

einsum
p=10
p=100
p=1000

n=10
0.0
0.002
0.026

n=100
0.002
0.008
0.257

n=1000
0.022
0.305
5.113

master
p=10
p=100
p=1000

n=10
0.001
0.006
0.073

n=100
0.015
0.121
1.175

n=1000
1.907
18.0
199.143

(Only the tensor calculations were timed (np.einsum, np.dot, np.tensordot, np.rollaxis), and employed randomly generated covariances.)

Should I add a benchmark for this?

I see, but it still does not call the best BLAS functions for this purpose.
The strategy with two cholesky factorizations also requires one matrix multiplication more than we need. I think we can push the flop count down to 1/4 of what we currently have, if we use the most efficient transformation and optimal BLAS calls.

I see, but it still does not call the best BLAS functions for this purpose.

I edited my comment to say "is allowed" instead of "is fine".  I didn't mean to endorse the use of @ in this particular case.

@ operator is beautiful for the readability though.

Another thing, for sampling matrix normal using the beforementioned BLAS functions, one would replace
out = mean + rowchol @ (std_norm @ colchol.T)
with
out = mean + rowchol @ (colchol @ std_norm.T).T

Thanks for your feedback @sturlamolden and @WarrenWeckesser .
So, the sampling task can be accomplished like so (assuming rowchol, colchol and std_norm are F_CONTIGUOUS, and std_norm is such that std_norm.shape is (num_rows, num_cols, size)):
for i in range(std_norm.shape[-1]):
    dtrmm(1.0, rowchol, std_norm[..., i],
          lower=True, overwrite_b=True)
    dtrmm(1.0, colchol, std_norm[..., i],
          lower=True, trans_a=True , side=1,
          overwrite_b=True)

return std_norm

Is that what you had in mind? This should reduce FLOPS by 1/2.
A question about the design: why does the multivariate normal distribution use _PSD class to compute (SVD-based) square roots of the covariance, while this distribution directly uses scipy.linalg.cholesky? Was this a conscious choice?

Well, almost. The f2py wrapper dtrmm does a probibitive amount of work for small arrays. Rather move the loop to Cython and use the raw function pointers:
from scipy.linalg.cython_blas cimport dtrmm, dtrmv
from scipy.linalg.cython_lapack cimport dpotrf

As for the multinormal distribution it can use three different methods:  SVD, Jacobi rotations, or Cholesky factorization (see https://github.com/numpy/numpy/blob/master/numpy/random/_generator.pyx). Cholesky is faster than SVD, but can be unstable for near-singular and rank deficient matrices. For example if a Tikhonov regularization is applied to the covariance matrix, you know in advance that Cholesky will be stable.

I do not know why Cholesky was choosen for the matrix-normal distribution.

Thanks for the feedback! I'm sorry for the delay, work got unexpectedly busy. I've figured out what changes are necessary and will push them over the weekend.

@sturlamolden would you mind reviewing this one again?

@rgommers I am not happy with the way we call BLAS/LAPACK here, which might be my fault because I suggested it (before realizing it would be a mistake).
Currently our Cython API for BLAS/LAPACK only supports 32-bit BLAS/LAPACK. We have started to include 64-bit BLAS/LAPACK in NumPy and SciPy, and we have way of dealing with it seamlessly in C and Cython. There is also a note that Cython API for LAPACK should not be used in SciPy, rather we should link LAPACK directly, something which will also take care of the 32/64-bit issue. Note that the issue here is more complex than simply 32 vs 64 bit Python, as we might use 32 bit LAPACK with 64 bit Python, and (this is the common case) both 32 and 64 bit LAPACK. Then, a second complicating factor is that different compilers use different ABIs. Thankfully, it is all taken care of in the C header npy_cblas.h.
This is how we should call BLAS or LAPACK from Cython from within SciPy:
cimport numpy as cnp
cnp.import_array()

cdef extern from *:
   """
   #include "npy_cblas.h"

    /* BLAS */
    static inline void
    cython_daxpy(npy_intp n, double alpha, double *x, npy_intp incx, double *y, npy_intp incy)
    {
        CBLAS_INT n_ = n, incx_ = incx, incy_ = incy;
        BLAS_FUNC(daxpy)(&n_, &alpha, x, &incx_, y, &incy_);
    }

    /* LAPACK */
    static inline npy_intp
    cython_dpttrs(npy_intp n, npy_intp nrhs, double *d, double *e, double *b, npy_intp ldb)
    {
        CBLAS_INT n_ = n, nrhs_ = nrhs, ldb_ = ldb, info = 0;
        BLAS_FUNC(dpttrs)(&n_, &nrhs_, d, e, b, &ldb_, &info);
        return (npy_intp)info;
    }

    """
    cdef void cython_daxpy(cnp.intp_t n, double alpha, double *x, cnp.intp_t incx, double *y, cnp.intp_t incy)
    cdef cnp.intp_t cython_dpttrs(cnp.intp_t n, cnp.intp_t nrhs, double *d, double *e, double *b, cnp.intp_t ldb)

To build and link correctly, see what we have done for qhull in scipy/spatial/setup.py.

Well actually, when doing something like
    CBLAS_INT n_ = n, nrhs_ = nrhs, ldb_ = ldb, info = 0;

we also need to check for integer overflow and raise an error if we overflow the CBLAS_INT, which we might very well do, if we e.g. use 32-bit LAPACK with 64-bit Python. So, the above example needs error handling to be correct as well.

So in all its glory, this would be the way to interface BLAS and LAPACK from Cython from within SciPy:
cimport numpy as cnp
from scipy.linalg import LinAlgError
from libc.limits cimport INT_MAX

cdef extern from *:
   """
   #include "npy_cblas.h"

    /* BLAS */
    static inline void
    _cython_daxpy(npy_intp n, double alpha, double *x, npy_intp incx, double *y, npy_intp incy)
    {
        CBLAS_INT n_ = n, incx_ = incx, incy_ = incy;
        BLAS_FUNC(daxpy)(&n_, &alpha, x, &incx_, y, &incy_);
    }

    /* LAPACK */
    static inline CBLAS_INT
    _cython_dpttrs(npy_intp n, npy_intp nrhs, double *d, double *e, double *b, npy_intp ldb)
    {
        CBLAS_INT n_ = n, nrhs_ = nrhs, ldb_ = ldb, info = 0;
        BLAS_FUNC(dpttrs)(&n_, &nrhs_, d, e, b, &ldb_, &info);
        return info;
    }
    """
    ctypedef int CBLAS_INT
    cdef void _cython_daxpy(cnp.intp_t n, double alpha, double *x, cnp.intp_t incx, double *y, cnp.intp_t incy) nogil
    cdef cnp.intp_t _cython_dpttrs(cnp.intp_t n, cnp.intp_t nrhs, double *d, double *e, double *b, cnp.intp_t ldb) nogil

cdef inline int check_cblas_int(cnp.intp_t n) except -1:
    if sizeof(cnp.intp_t n) > sizeof(CBLAS_INT):
        if n > INT_MAX: raise ValueError("integer overflow")
    return 0

cdef int cython_daxpy(cnp.intp_t n, double alpha, double *x, cnp.intp_t incx, double *y, cnp.intp_t incy) except -1:
    """ Cython wrapper for BLAS daxpy """
    check_cblas_int(n)
    check_cblas_int(incx)
    check_cblas_int(incy)
    with nogil:
        _cython_daxpy(n, alpha, x, incx, y, incy)
    return 0

cdef int cython_dpttrs(cnp.intp_t n, cnp.intp_t nrhs, double *d, double *e, double *b, cnp.intp_t ldb) except -1:
    """ Cython wrapper for LAPACK dpttrs """
    cdef CBLAS_INT info
    check_cblas_int(n)
    check_cblas_int(nrhs)
    check_cblas_int(ldb)
    with nogil:
        info = _cython_dpttrs(n, nrhs, d, e, b, ldb)
    if info < 0: raise LinAlgError("lapack_info = %d" % (info,))
    return 0

Releasing the GIL can be expensive, so experiment with this option and consider only doing it for large data sets.

For this PR then, follow this pattern and implement it for BLAS_FUNC(dpotrf) and BLAS_FUNC(dtrmm), then link the correct BLAS and LAPACK as we have done for qhull (cf. scipy/spatial/setup.py).

Sorry everyone, I haven't had time to work on this for a while, and won't for another couple of weeks. I'll definitely make all the changes requested once I get around to it.

@siddhantwahal It sounds like the originally-proposed changes (e.g. einsum or matmul instead of tensordot) were already big improvement and relatively simple. Would you like to revert to those so we can merge this, then you can work on the even bigger improvements in Cython when you have more time/interest?
The force-push erased the original commits - do you have them somewhere, or are they easy for you to recreate?

The force-push erased the original commits - do you have them somewhere, or are they easy for you to recreate?

I think it was just https://github.com/scipy/scipy/commit/7151ababcb1761f4a0ffe7ab21ca121e29401739. I would like to ensure I can still reproduce the timings in the PR description though.

Perfect. If it sounds good to you, I'll:

check for performance improvement. Assuming I can reproduce it, I'll continue.
merge main into this branch
add a commit that essentially brings this branch to the same state as 7dc3157
push the changes back here
merge

This branch will still have the two commits that are here now, so you can revive those someday if you choose.
How does that sound?

I can confirm the speedup here, but it doesn't look like the random samples are the same (or close). Are they supposed to be the same, or is this just a different (but also valid) formulation? If the latter, this is a bit tougher to review. It would be a no-brainer if the output were identical but the time was improved, but if the output is just also valid, I'll need to understand what's going on a bit better - can you help explain it?

Perfect. If it sounds good to you, I'll:
* check for performance improvement. Assuming I can reproduce it, I'll continue.

* merge main into this branch

* add a commit that essentially brings this branch to the same state as [7dc3157](https://github.com/scipy/scipy/commit/7dc31570bb4bf8633be95d927ff43dde935d14c4)

* push (not force-push) the changes back here

* merge

This branch will still have the two commits that are here now, so you can revive those someday if you choose.
How does that sound?

Sounds great, thank you!

I can confirm the speedup here, but it doesn't look like the random samples are the same (or close). Are they supposed to be the same, or is this just a different (but also valid) formulation? If the latter, this is a bit tougher to review. It would be a no-brainer if the output were identical but the time was improved, but if the output is just also valid, I'll need to understand what's going on a bit better - can you help explain it?

Thanks for confirming the speedup. The random variates not being the same is indeed concerning. Allow me to take a deeper look over the next couple of days.

We cannot use cython_blas and cython_lapack internally in SciPy!

These imports are for external users only.

As I have previously explain we must link with BLAS and LAPACK during the build stage, as we do in the rest of SciPy and NumPy.

There are multiple internal uses in scipy. Can you give a link to previous explanations?

@sturlamolden @ev-br We're not going forward with the Cython approach, please see https://github.com/scipy/scipy/pull/12312#issuecomment-1217645463
To summarize the state of this PR:

we need to bring it back to https://github.com/scipy/scipy/commit/7dc31570bb4bf8633be95d927ff43dde935d14c4
check for correctness and ensure random variates don't change

We cannot use cython_blas and cython_lapack internally in SciPy!

These imports are for external users only.

As I have previously explain we must link with BLAS and LAPACK during the build stage, as we do in the rest of SciPy and NumPy.

There are multiple internal uses in scipy.

I can try to find a link.
The short explanations is that the Cython wrappers are autogenerated at build time, and thus might not exit yet when the internal Cython module using them is built. It all depends on the order by which the build system operates. We therefore link BLAS and LAPACK directly because using the Cython wrappers can be fragile depending on the build system. When SciPy is built, however, using them will be stable.

A link would indeed be helpful. Possibly in a dedicated issue to not hijack this one, and bring build system wizards into the discussion.
Your point about build order is taken, so maybe it's a matter of making sure linalg is built first. Or maybe it's trickier and we need to roll back our internal usage of cython_lapack/blas. There definitely is usage, and I'm not aware of any real world problems with either old np.distutils or new meson based build systems. But again, I'm not claiming expertise in this, so best engage build experts.

Would you like me to merge in main / 7dc3157 and push back here, @siddhantwahal?

Would you like me to merge in main / 7dc3157 and push back here, @siddhantwahal?

Yes, please go ahead.

I can confirm the speedup here, but it doesn't look like the random samples are the same (or close). Are they supposed to be the same, or is this just a different (but also valid) formulation? If the latter, this is a bit tougher to review. It would be a no-brainer if the output were identical but the time was improved, but if the output is just also valid, I'll need to understand what's going on a bit better - can you help explain it?

@mdhaber The difference was due to the the way the standard normal samples were being created. Essentially, the problem boils down to me not realizing that:
[nav] In [3]: np.allclose(
         ...:     np.random.default_rng(0).standard_normal(size=(2, 3)),
         ...:     np.random.default_rng(0).standard_normal(size=(3, 2)).T
         ...: )
         ...:
Out[3]: False

The fix is simple. Instead of std_norm = random_state.standard_normal(size=(size, dims[0], dims[1])), we'll just do random_state.standard_normal(size=(dims[1], size, dims[0])).transpose(1, 2, 0).
I'll push a fix after you're done merging in main.

All set @siddhantwahal!

@mdhaber Thanks for updating the PR. I just pushed a few commits that ensure that matrix_normal.rvs generates the sample sample stream.

Thanks @siddhantwahal. The random stream is essentially unchanged, so although I haven't thought through why the calculations are equivalent, it's clear that they are. It's only a few lines that are changes, so it seems safe enough.
For the cases suggested at the top, here is a log-log plot of the relative execution time (between this PR and main) vs the absolute execution time in main.

The more time the calculation takes, the greater the improvement made by this PR, which is 30~40 times faster for the slowest cases. The only time this PR is consistently slower is in the very smallest cases.


[helm chart] Fix failed call to admission webhook controller

What this PR does / why we need it:
Set the actual namespace and name of the service which serves the
webhook admission controller. Kubernetes could not find the right
endpoint, because it's looking to the serivce kubernetes in the
default namespace.
This sets the charts namespace and the webhook service name in the
corresponding validation-webhook manifest.
Which issue this PR fixes: fixes #1255
Special notes for your reviewer:
This only affects the helm chart component
Release note:
[helm chart] Fix failed call to admission webhook controller #1255

/assign @simonswine

👏
cheers! 🍺

This is already set as expected - we utilise an APIService resource in order to direct traffic back at the apiserver in order to access the webhook.
I'd be interested to understand what version of Kubernetes you're running, as well as gather any other details as to why your installation is failing 😄

Hi @munnerz,
I'm running a regional GKE 1.11.6 with RBAC / NetworkPolicies enabled. And applying this PR to the chart makes the validation admission hooks work for me.
But I'm pretty new in the admission world - so how is it supposed to work? Shouldn't the ValidationWebhookConfiguration point to the webhook service itself? Or how does Kubernetes know where the validation endpoint lives?

Hi @munnerz,
now I see what you mean. The APIService already has a reference to the admission webhook controller. And within the APISerivce I can see an error message pointing in the real cause...
The APIService says, that it timed out trying to reach the webhook. Looking at the webhook pod, it seems that it doesn't expose a port.
Containers:
  webhook:
    Container ID:  docker://6e7d93f26562ec0af48ed4359320ee049c8f3091e6d45b20e2cb6e5f2199d67f
    Image:         quay.io/jetstack/cert-manager-webhook:v0.6.1
    Image ID:      docker-pullable://quay.io/jetstack/cert-manager-webhook@sha256:f38d479a5c49987a4cde65fa7b5654cc09cf3a937e5d4f162c41065a76eb3e9b
    Port:          <none>
    Host Port:     <none>
    Args:
      --v=12
      --secure-port=6443
      --tls-cert-file=/certs/tls.crt
      --tls-private-key-file=/certs/tls.key
      --disable-admission-plugins=NamespaceLifecycle,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,Initializers
    State:          Running
      Started:      Tue, 12 Feb 2019 16:43:53 +0100
    Ready:          True
    Restart Count:  0

Now I'll start finding out why 🙂
/do-not-merge

So the pod itself shouldn't need to define  port in order to make it work - I wonder if your NetworkPolicy could be interfering here, and blocking connections from the GKE control plane?
/unassign @simonswine
/assign
/hold

@tonyfahrion did you have any luck getting to the bottom of the issue here? If there's some configuration that we've not accounted for, it'd be great to get a note in the troubleshooting doc about it 😄
It may help to move this discussion to Slack, where we can try and help you dig into what's causing this.
In the meantime, I'm going to close this PR as it's not a change we should make - but thanks for putting it together! 😄
/close

Hi @munnerz, we are still evaluating why this is happening. I agree with you, that this PR is not the solution! As I now understood how it is meant 🙂
Please give me a few days, I'll have to solve other things first.
Keep up the good work @munnerz!


Set class on html not working

Hi, I'm using BlazorStyled with MatBlazor, I could style like this fine
<style>
  .xxx {
     background: rgba(20,20,20,0.75);
 }
</style>
<MatAppBar class="xxx" />

But I could not get it working like this
<Styled>
    xxx {
        background: rgba(20,20,20,0.75);
    }
</Styled>
<MatAppBar class="xxx" />

I could get it working on body and using classname so blazorstyled is setup correctly.

That's odd, it should work.
What version of BlazorStyled are you using?
Do you have BlazorStyled in development mode? If so, in DevTools you should be able to find the style tag in the head and look inside of it (it should be something like <style blazorstyled-id="DEFAULT">...</style>) - do you see you class in there correctly?
Lastly, in DevTools, regardless of development or not, you should be able to select the MatAppBar div or what ever it generates (might be nav) and see what classes are applied to it, maybe its there but getting overridden by another class?
If all else fails can you post a github repo with a reproduction so I can take a look?

3.0.0 Alpha 7
Repro here. Look at Header.razor
https://filedn.com/l3TGy7Y83c247u0RDYa9fkp/temp/code/TestBlazorStyledWithMatBlazor.zip

I figured out what's wrong. The doc says we don't need !important, but we need that here. The css version doesn't need that though.


Write test codes

I'm now working on this issue at #21. When this pull request is merged, this issue will be solved.


Display subsets of "opening auction"

Chore
We want to show two subsets of opening auction: "Opening Auction: Not enough liquidity" and "Opening Auction: Closing on enactmenttimestamp"
Acceptance criteria

Wherever there is currently an opening auction status, there is a way to understand why the market is in opening auction e.g. "not enough liquidity" or "closing soon"
If the opening auction is closing soon, I can see when that is "Closing on enactmenttimestamp"
For "not enough liquidity" there is a mouseover: "This market is in opening auction until it has reached enough liquidity to move into continuous trading."
For "closing on..." there is a mouseover: "This is a new market in an opening auction to determine a fair mid-price before starting continuous trading."

Background
Outcome of spike https://github.com/vegaprotocol/frontend-monorepo/issues/2219
How to work out what status to display:
If status = opening auction and TODAY > enactmentTimestamp then status = Opening Auction : Not enough liquidity to open
else status = Opening Auction : Closing on enactmentTimestamp
Data available in governance API e.g. (this is fairground) https://api.n06.testnet.vega.xyz/api/v2/governance?proposalId=de48ad0adc668a80a074e790d118b6a64fa4909fc60ebbc2c335be3b675fec93

I raised this to Core and it was publicly concluded (with Barney backing) that even though we might have to do this in a couple of places, it doesnt make sense to add it to Core because it is fully derivable based on info they already provide.  So we will need to at some point build this code and make it available to Console so they can utilise it too.
In any case I am happy this doesnt need to be in MVP; therefore moving to unblocked and putting in the backlog.


Switch "change" implementation to use editNew

Would need to tweak decoration code so that targets have more control over highlighting.  Would also allow us to use "change after" as synonym for "pour"
Another benefit is that we could also modify the target for the type scope type and then use "change type" to add :  and move cursor there if there is no type
Could also support "paste to type" and "bring to type" when there is currently no type

change after would this mean that this action could actually take a target or a destination descriptor? Because we don't want the users to have to say clear to air  :D

This one should be fairly straightforward once #1605 lands, keeping one thing in mind: we'll need to avoid the automatic line expansion that we get for "drink" and "pour".  Can just set these in those derived classes rather than base class 🤷♂


Docs components examples code not always working ("You should use slots with ")

Reproduction Link

NuxtLabs UI Docs

Steps to reproduce

Navigate through different components and examine the examples
It might not break immediately, but the code example breaks and shows the below object instead
Hard refreshing solves the issue but it happens again on further navigation
Screenshots are from the Alert component but happens on any page.
Same result on Edge, Firefox Dev and Brave. Running Win 11 x64, happy to provide more specs if required.

What is Expected?

What is actually happening?

This should have been fixed already.


Maybe my assembler-plus support?

Not sure if you really want it, but with this PR it allows support for .ap files or assembly plus. It supports macros and soon some other stuff. https://github.com/SpideyZac/assembler-plus

I'm not gonna merge this yet, since I don't want to make any major changes right before the video releases, but I'll check it out and probably merge it at some point.

ok, btw this only applies my compiler to .ap files. if u provide a .as file it uses the regular python interpreter. (also i wanted to try and be featured lol)

🔥

🔥

as long as this is backwards compatible with all of my assembly, im on board, but please double check that

@mattbatwings I believe so, NoName_Official has been fixing all the bugs. I believe the only backwards compatibility thing would be currently identifier names cannot accept other characters than _, numbers, and ascii characters. This shouldn't be much of a problem, but again like I mentioned, the code for this PR will only apply my assembler for .ap files. .as files will still use your assembler. If you need to ask anything about it or run some kind of tests just hmu in dms. Discord is spideyzac

@AdoHTQ @mattbatwings All test cases passing right now. Potentially we just use my assembler as it's just an exe in the end?

ah, one quick issue, symbols like !=, =, >= are not supported. will fix in the morning.

Unless any major bugs are found, the current release of the VM is the final one before the first video releases. Even though this theoretically shouldn't cause any issues with normal functionality, I don't want to risk hundreds of people downloading it from the video and then getting a broken build. Also, since its an exe, is this linux compatible?

Makes sense, totally okay with me. Again if you look at the code i submitted, you can see that the only thing changed is if there’s a .ap file, it will attempt to use the executable, so i don’t see a way that it’s possible for it to somehow break. I was only suggesting we use this as it’s easier to catch bugs with this, and it’s a lot more safe, as it provides errors which show exactly where and what went wrong as well as catching certain things the current assembler does not.. Alongside that it has additional features like macros and some other stuff.  The program is in Rust, so you can just build the executable for Windows, Mac, and Linux pretty easily I believe. Again, totally up to you and Matt, i was just putting this here because it’s an upgrade from the current assembler, and the way i have the pr designed currently (idk if u guys want to change it), as i mentioned before, will only apply my assembler in specific scenarios. (sorry for that absolute yap fest lol)

and if you have the time, you could also potentially just test the basic functionality before merging, because for some reason i could not get the project working locally in godot after hours of trying


Config fix

Sorrhy I havent split that. If you have an issue with this PR then I'll break it up, but I dont think the other parts are valuable enough on there own to split them into separate branches.

I don't have any issue with the PR; it's a matter of risk management.
I just make the suggestion, that you have a large series of small PRs,
rather than a small series of large  PRs, it's much easier to assess and
manage risk, especially when a small PR just fixes (for example) a docker
definition. And a small (in terms of lines of code) fix like what you made
there, is very valuable.
I think it will make it easier, especially for you is all :-).
On Mon, Aug 8, 2016 at 10:44 AM, KitL<EMAIL_ADDRESS>wrote:

Sorrhy I havent split that. If you have an issue with this PR then I'll
break it up, but I dont think the other parts are valuable enough on there
own to split them into separate branches.
You can view, comment on, or merge this pull request online at:
https://github.com/REANNZ/faucet/pull/150
Commit Summary

Add concurrencytest to dependencies
Change gauge docker to use docker-compose for db
Big Config Changes.
Error fixes

File Changes

M Dockerfile.gauge
https://github.com/REANNZ/faucet/pull/150/files#diff-0 (42)
M README.docker.md
https://github.com/REANNZ/faucet/pull/150/files#diff-1 (29)
A docker-compose.yaml
https://github.com/REANNZ/faucet/pull/150/files#diff-2 (32)
M setup.py https://github.com/REANNZ/faucet/pull/150/files#diff-3
(2)
A src/ryu_faucet/org/onfsdn/faucet/conf.py
https://github.com/REANNZ/faucet/pull/150/files#diff-4 (11)
A src/ryu_faucet/org/onfsdn/faucet/config_parser.py
https://github.com/REANNZ/faucet/pull/150/files#diff-5 (248)
A src/ryu_faucet/org/onfsdn/faucet/db_conf.py
https://github.com/REANNZ/faucet/pull/150/files#diff-6 (23)
M src/ryu_faucet/org/onfsdn/faucet/dp.py
https://github.com/REANNZ/faucet/pull/150/files#diff-7 (264)
M src/ryu_faucet/org/onfsdn/faucet/faucet.py
https://github.com/REANNZ/faucet/pull/150/files#diff-8 (18)
M src/ryu_faucet/org/onfsdn/faucet/gauge.py
https://github.com/REANNZ/faucet/pull/150/files#diff-9 (440)
M src/ryu_faucet/org/onfsdn/faucet/port.py
https://github.com/REANNZ/faucet/pull/150/files#diff-10 (40)
M src/ryu_faucet/org/onfsdn/faucet/valve.py
https://github.com/REANNZ/faucet/pull/150/files#diff-11 (7)
M src/ryu_faucet/org/onfsdn/faucet/vlan.py
https://github.com/REANNZ/faucet/pull/150/files#diff-12 (66)
A src/ryu_faucet/org/onfsdn/faucet/watcher.py
https://github.com/REANNZ/faucet/pull/150/files#diff-13 (331)
A src/ryu_faucet/org/onfsdn/faucet/watcher_conf.py
https://github.com/REANNZ/faucet/pull/150/files#diff-14 (39)
M tests/config/testconfig.yaml
https://github.com/REANNZ/faucet/pull/150/files#diff-15 (65)
A tests/config/testconfigv2.yaml
https://github.com/REANNZ/faucet/pull/150/files#diff-16 (60)
A tests/config/testgaugeconfig.conf
https://github.com/REANNZ/faucet/pull/150/files#diff-17 (1)
A tests/config/testgaugeconfig.yaml
https://github.com/REANNZ/faucet/pull/150/files#diff-18 (29)
M tests/faucet_mininet_test.py
https://github.com/REANNZ/faucet/pull/150/files#diff-19 (53)
M tests/test_config.py
https://github.com/REANNZ/faucet/pull/150/files#diff-20 (195)

Patch Links:

https://github.com/REANNZ/faucet/pull/150.patch
https://github.com/REANNZ/faucet/pull/150.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/REANNZ/faucet/pull/150, or mute the thread
https://github.com/notifications/unsubscribe-auth/AEgZ18zl2sq_ufF0aNgMNzxOHiDfVEHYks5qdl_XgaJpZM4Jemva
.


Add Travis CI status to README

I took a look, adding travis status is very cool.
Per our developer guidelines, the requirements are normally: 2 * +1's, and two of the folks involved (either 2 reviewers or one of the submitters) in the process need to be "core" members.  For documentation, we only need 1 * +1.
Since you commented, I'll wait for you to give any feedback or a +1.

+1
Thanks for the clarifications.

Merging due to 2 * +1's.


Make sure PyWPS objects are serializable

Description
Parallelisation libraries, like dask, communicate processes from the scheduler to workers by serializing-deserializing objects through the network. It seems that some PyWPS objects are not serializable. The issues I've found so far are:

Input and Outputs in the Process objects include weak references (weakref in the IO handlers)
WPSRequest has an EncodedFile object that is not pickable.

I propose to start by writing tests that try to pickle PyWPS objects, submit a PR, and pursue the discussion over there.
Environment

operating system: Ubuntu
Python version: 3.9.7
PyWPS version: 4.5.2
source/distribution
[x] git clone
[ ] Debian
[ ] PyPI
[ ] zip/tar.gz
[ ] other (please specify):
web server
[ ] Apache/mod_wsgi
[ ] CGI
[ ] other (please specify):

Steps to Reproduce
Additional Information

Another more serious issue is that Process._run_process, the method actually running the process handler, triggers Process.launch_next_process, which runs Service.prepare_process_for_execution. So individual processes need a reference to the overall service, which complicates the serialization of Processes. I'm not sure I can solve this one without falling into a refactoring nightmare. Ideas ?

Hello huard,

Another more serious issue is that Process._run_process, the method actually running the process handler, triggers Process.launch_next_process, which runs Service.prepare_process_for_execution. So individual processes need a reference to the overall service, which complicates the serialization of Processes. I'm not sure I can solve this one without falling into a refactoring nightmare. Ideas ?

I do also agree that is quite an issue, but refactoring this is very difficult at the moment.
Best regard.

Hello,
Moreover the json serialization is used in different context with very different meaning, the serialization may end up as json outputs for json request, may be used within XML templates or may be used to serialize data to the data base.
We should clarify the intend of json serialization and try to keep it.


Adjust getVote function to see at which point the cascade stops, and return that "face-likeness" score

Probably best to make a separate getVote function for this modification, in case I make this a useable package for people.

This is completed.  Keeping this with regard to the cascade: should this be if-elseif-elseif-...-end or if-end-if-...-end?

I think this should be if-elseif-elseif-...-end, as that is the idea behind the cascade.  I think I will close this now.


Error at step 8 of How to Run

Describe the bug
When trying to run the code in Google Colab, I get an error when I am at step 8:
!pip install filterpy sktime
When I do this, I get the following errors message:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
yellowbrick 1.3.post1 requires numpy<1.20,>=1.16.0, but you have numpy 1.21.5 which is incompatible.
datascience 0.10.6 requires folium==0.2.1, but you have folium 0.8.3 which is incompatible.
albumentations 0.1.12 requires imgaug<0.2.7,>=0.2.5, but you have imgaug 0.2.9 which is incompatible.
Successfully installed deprecated-1.2.13 filterpy-1.4.5 llvmlite-0.38.0 numba-0.55.1 numpy-1.21.5 sktime-0.10.0 statsmodels-0.13.1
WARNING: The following packages were previously imported in this runtime:
[numpy]
You must restart the runtime in order to use newly installed versions.
When I restart the runtime, it does not help. When I try to run predict_video.py, I get the following error:
2022-02-08 15:57:12.483066: W tensorflow/core/util/tensor_slice_reader.cc:96] Could not open WeightsTracknet/model.1: DATA_LOSS: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator?
OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 12 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
I do not know if the second error is the cause of the first error, but I would love to be able to successfully implement the interesting algorithm. I am looking forward to your reply.
Desktop (please complete the following information):

OS: Windows
Browser chrome
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

@PaulvanderWolde  Hey! Thanks for opening the issue!
From what you sent, I guess Colab already resolved the issue with conflicting packages. However, the second error is about  WeightsTracknet/model.1
Can you please tell me did upload the repository to your Google drive and mount it to your notebook?
Can you also tell me what the following code outputs in your notebook:
import os
print(os.getcwd())
print(os.listdir())

Thank you for the quick response!
I did upload the repository to my Google drive and mounted it to the notebook.
This code:
import os
print(os.getcwd())
print(os.listdir())

Resulted in this output:
/content/drive/MyDrive/tennis-tracking
['LICENSE', 'AUTHORS.md', 'README.md', 'CODE_OF_CONDUCT.md', 'CONTRIBUTING.md', 'tracking_players.csv', 'detection.py', 'clf.pkl', 'requirements.txt', 'court_detector.py', 'predict_video.py', 'utils.py', 'bigDF.csv', 'sort.py', 'court_reference.py', 'Bounces', 'Models', 'court_configurations', 'convert', '.github', 'VideoOutput', 'WeightsTracknet', 'TrackPlayers', 'VideoInput', 'Yolov3', '.git', 'requirements.gdoc', 'pycache', 'bouncing_point_algo.ipynb']

Is model.1 inside WeightsTracknet?
And a side question, did you change runtime to GPU?

Yes, model.1 is in WeightTracknet folder. And I also changed the runtime to GPU

If everything is as you say it is, then I don't have a clue 😞
this is the error:
2022-02-08 15:57:12.483066: W tensorflow/core/util/tensor_slice_reader.cc:96] Could not open WeightsTracknet/model.1:

The other two are warnings:
DATA_LOSS: not an sstable (bad magic number): perhaps your file is in a different file format and you need to use a different restore operator?
OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 12 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'

Very sorry, if you will be able to solve the issue, let us know!

I deleted everything and started from the first steps (for the second time). This time, I made a new Google Colab from the Drive page itself. Now everything seems to work! I do not know why, because it should not matter.
Thank you for your help!

I really glad to hear that!
Your persistence is admirable!
Thanks for the running the code)
Cheers 😄


Add ability to remove input text in Select and Relation fields

@tabuna Hi!

@grigoriy-ivanov
Thank you for bringing this to attention. I believe we should take the opposite approach and implement a method that cancels field clearing instead of enabling it. In my opinion and experience, enabling clearing will likely be required more frequently.
Would it be feasible to make this behavior the default without an option? What are your thoughts on this? Could you update the pull request accordingly?


Convert yolov5 dataset labels into COCO labels

Hi. I want to compare the performance between yolov5 and DETR (from Hugging Face). The custom dataset I have has already txt lables in YOLO format. However, DETR expects labels to be in COCO format.
Can anybody help me how to use this tool?
dataset.yaml
# Paths
train: ~/Dataset/train/images
val: ~/Dataset/val/images
test: ~/Dataset/test/images

# Classes
names:
    0: person

You can read the YOLOv5 predictions with AnnotationSet.from_yolov5() and and then convert them to COCO using the .save_coco() method:
form globox import AnnotationSet

predictions = AnnotationSet.from_yolo_v5("path/to/annotations", image_folder="path/to/images")
predictions.save_coco(
  "coco_preds.json",
  label_to_id={"person": 0},
  imageid_to_id={im: i for i, im in enumerate(sorted(predictions.image_ids))}
)

Conversion to COCO is a little bit tricky as you can see because COCO uses integer ids rather and image names and str class names. In any case you should adapt label_to_id and imageid_to_id to match the id mapping from the DETR dataset, I'm just suggesting an example.
Note that you can also read COCO annotations with AnnotationSet.from_coco(), which could simplify your workflow.

Hi, i have same goal, but when i run this code:
from globox import AnnotationSet
predictions = AnnotationSet.from_yolo_v5("little/labels/", image_folder="little/img/")
predictions.save_coco(
"coco_preds.json",
label_to_id={"one": 0, 'two': 1},
imageid_to_id={im: i for i, im in enumerate(sorted(predictions.image_ids))}
)
i have this error:
Traceback (most recent call last):
File "C:\Users\nolro\PycharmProjects\chekc\COCO\yolo_to_coco.py", line 27, in
predictions.save_coco(
File "C:\Users\nolro\PycharmProjects\chekc\venv\lib\site-packages\globox\annotationset.py", line 856, in save_coco
content = self.to_coco(
File "C:\Users\nolro\PycharmProjects\chekc\venv\lib\site-packages\globox\annotationset.py", line 812, in to_coco
"category_id": label_to_id[box.label],
KeyError: '0'
help me figure it out

When you specify label_to_id = {"one": 0, "two": 1}, this means that the bounding boxes you are dealing with (predictions) should have labels such as "one" and "two" only. However as pointed out by the error message, some box has the label "0" instead, which is not part of the aforementioned allowed labels.
Maybe your predictions are already in the right format or some predictions have the wrong label.


Terminal Reporter Issue with Multi-Process

Terminal Reporter not functioning due to main process unable to fetch spawned process' tests results

This issue has been resolved with commit 2bed46ee15288b1ec8a3f9db99f5bfa6552b1b1d


adding cards to gala page so that the tweets stand out more

Description of changes
This PR adds "twitter cards" to the links for the gala so that when someone shares a link to the page on the site, it stands out more.
Issue Resolved

There were no issues associated with this pull request.
Fixes #

@hollomancer mind checking this out so I can test it?

Thanks, @Wimsy113!


FR: Support Go 1.6

[READ] Step 1: Are you in the right place?

For issues or feature requests related to the code in this repository
file a GitHub issue.

If this is a feature request make sure the issue title starts with "FR:".

For general technical questions, post a question on StackOverflow
with the firebase tag.
For general Firebase discussion, use the firebase-talk
google group.
For help troubleshooting your application that does not fall under one
of the above categories, reach out to the personalized
Firebase support channel.

[REQUIRED] Step 2: Describe your environment

Operating System version: N/A
Firebase SDK version: N/A
Library version: N/A
Firebase Product: all

[REQUIRED] Step 3: Describe the problem
Steps to reproduce:
What happened? How can we make the problem occur?
This could be a description, log/console output, etc.
To be compatible with all supported versions on AppEngine (and therefore be able to use in examples in https://github.com/GoogleCloudPlatform/golang-samples), it would be great to support Go 1.6. See previous discussion in https://github.com/firebase/firebase-admin-go/issues/110.
Relevant Code:
Code using import "context", request.WithContext, subtests, etc. will need to be updated.
PR coming up.

With #120 merged, the 1.6.x build is now green. Closing this.


Adding API to get the controller metrics registry

Codecov Report

Merging #2016 into master will increase coverage by 0.08%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #2016      +/-   ##
==========================================
+ Coverage   69.64%   69.73%   +0.08%
==========================================
  Files         829      829
  Lines       40016    40017       +1
  Branches     5383     5383
==========================================
+ Hits        27870    27904      +34
+ Misses      10282    10259      -23
+ Partials     1864     1854      -10

Impacted Files
Coverage Δ

...m/linkedin/pinot/controller/ControllerStarter.java
58.86% <0%> (-0.38%)
:arrow_down:

...in/pinot/core/query/pruner/ValidSegmentPruner.java
57.14% <0%> (-28.58%)
:arrow_down:

...impl/dictionary/DoubleOnHeapMutableDictionary.java
68.88% <0%> (-6.67%)
:arrow_down:

...e/operator/dociditerators/BitmapDocIdIterator.java
60.71% <0%> (-3.58%)
:arrow_down:

...ot/core/query/pruner/ColumnValueSegmentPruner.java
84.48% <0%> (-3.45%)
:arrow_down:

.../com/linkedin/pinot/common/data/TimeFieldSpec.java
97.36% <0%> (-1.32%)
:arrow_down:

.../pinot/core/common/datatable/DataTableBuilder.java
91.06% <0%> (-1.12%)
:arrow_down:

...impl/dictionary/FloatOffHeapMutableDictionary.java
89.09% <0%> (ø)
:arrow_up:

...pby/NoDictionarySingleColumnGroupKeyGenerator.java
92.92% <0%> (+1.01%)
:arrow_up:

...filter/SortedInvertedIndexBasedFilterOperator.java
79.72% <0%> (+1.35%)
:arrow_up:

... and 12 more

Continue to review full report at Codecov.

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


pipx install on macos not working

pipx install posting
Fatal error from pip prevented installation. Full pip output in file:
    /Users/xxx/.local/pipx/logs/cmd_2024-11-10_20.06.00_pip_errors.log

pip seemed to fail to build package:
    textual-autocomplete==3.0.0a7

Some possibly relevant errors from pip install:
    ERROR: Ignored the following versions that require a different python version: 0.21.0 Requires-Python <3.12,>=3.8
    ERROR: Could not find a version that satisfies the requirement tree-sitter-languages==1.10.2; extra == "syntax" (from textual[syntax]) (from versions: none)
    ERROR: No matching distribution found for tree-sitter-languages==1.10.2; extra == "syntax"

Error installing posting.

Can you share the pip log file? I cannot reproduce this on MacOS.

PIP STDOUT
----------
Collecting posting
  Using cached posting-2.0.1-py3-none-any.whl.metadata (16 kB)
Collecting click-default-group<2.0.0,>=1.2.4 (from posting)
  Using cached click_default_group-1.2.4-py2.py3-none-any.whl.metadata (2.8 kB)
Collecting click<9.0.0,>=8.1.7 (from posting)
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting httpx<1.0.0,>=0.27.2 (from httpx[brotli]<1.0.0,>=0.27.2->posting)
  Using cached httpx-0.27.2-py3-none-any.whl.metadata (7.1 kB)
Collecting pydantic-settings<3.0.0,>=2.4.0 (from posting)
  Using cached pydantic_settings-2.6.1-py3-none-any.whl.metadata (3.5 kB)
Collecting pydantic<3.0.0,>=2.9.2 (from posting)
  Using cached pydantic-2.9.2-py3-none-any.whl.metadata (149 kB)
Collecting pyperclip<2.0.0,>=1.9.0 (from posting)
  Using cached pyperclip-1.9.0.tar.gz (20 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting python-dotenv<2.0.0,>=1.0.1 (from posting)
  Using cached python_dotenv-1.0.1-py3-none-any.whl.metadata (23 kB)
Collecting pyyaml<7.0.0,>=6.0.2 (from posting)
  Using cached PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl.metadata (2.1 kB)
Collecting textual-autocomplete==3.0.0a12 (from posting)
  Using cached textual_autocomplete-3.0.0a12-py3-none-any.whl.metadata (5.7 kB)
Collecting textual==0.85.0 (from textual[syntax]==0.85.0->posting)
  Using cached textual-0.85.0-py3-none-any.whl.metadata (5.6 kB)
Collecting watchfiles>=0.24.0 (from posting)
  Using cached watchfiles-0.24.0-cp313-cp313-macosx_11_0_arm64.whl.metadata (4.9 kB)
Collecting xdg-base-dirs<7.0.0,>=6.0.1 (from posting)
  Using cached xdg_base_dirs-6.0.2-py3-none-any.whl.metadata (3.6 kB)
Collecting markdown-it-py>=2.1.0 (from markdown-it-py[linkify,plugins]>=2.1.0->textual==0.85.0->textual[syntax]==0.85.0->posting)
  Using cached markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting platformdirs<5,>=3.6.0 (from textual==0.85.0->textual[syntax]==0.85.0->posting)
  Using cached platformdirs-4.3.6-py3-none-any.whl.metadata (11 kB)
Collecting rich>=13.3.3 (from textual==0.85.0->textual[syntax]==0.85.0->posting)
  Using cached rich-13.9.4-py3-none-any.whl.metadata (18 kB)
Collecting typing-extensions<5.0.0,>=4.4.0 (from textual==0.85.0->textual[syntax]==0.85.0->posting)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting tree-sitter<0.21.0,>=0.20.1 (from textual[syntax]==0.85.0->posting)
  Using cached tree_sitter-0.20.4.tar.gz (140 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
INFO: pip is looking at multiple versions of textual[syntax] to determine which version is compatible with other requirements. This could take a while.
Collecting posting
  Using cached posting-2.0.0-py3-none-any.whl.metadata (16 kB)
Collecting textual==0.83.0 (from textual[syntax]==0.83.0->posting)
  Using cached textual-0.83.0-py3-none-any.whl.metadata (5.6 kB)
Collecting posting
  Using cached posting-1.13.0-py3-none-any.whl.metadata (15 kB)
Collecting pydantic-settings==2.4.0 (from posting)
  Using cached pydantic_settings-2.4.0-py3-none-any.whl.metadata (3.5 kB)
Collecting pydantic==2.9.0 (from posting)
  Using cached pydantic-2.9.0-py3-none-any.whl.metadata (146 kB)
Collecting textual-autocomplete==3.0.0a9 (from posting)
  Using cached textual_autocomplete-3.0.0a9-py3-none-any.whl.metadata (5.8 kB)
Collecting textual==0.79.1 (from textual[syntax]==0.79.1->posting)
  Using cached textual-0.79.1-py3-none-any.whl.metadata (5.6 kB)
Collecting xdg-base-dirs==6.0.1 (from posting)
  Using cached xdg_base_dirs-6.0.1-py3-none-any.whl.metadata (4.6 kB)
Collecting posting
  Using cached posting-1.12.3-py3-none-any.whl.metadata (15 kB)
Collecting httpx==0.27.0 (from httpx[brotli]==0.27.0->posting)
  Using cached httpx-0.27.0-py3-none-any.whl.metadata (7.2 kB)
Collecting pydantic-settings==2.3.4 (from posting)
  Using cached pydantic_settings-2.3.4-py3-none-any.whl.metadata (3.3 kB)
Collecting pydantic==2.7.3 (from posting)
  Using cached pydantic-2.7.3-py3-none-any.whl.metadata (108 kB)
Collecting pyperclip==1.8.2 (from posting)
  Using cached pyperclip-1.8.2.tar.gz (20 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting pyyaml==6.0.1 (from posting)
  Using cached PyYAML-6.0.1.tar.gz (125 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'done'
Collecting textual==0.77.0 (from textual[syntax]==0.77.0->posting)
  Using cached textual-0.77.0-py3-none-any.whl.metadata (5.6 kB)
Collecting posting
  Using cached posting-1.12.1-py3-none-any.whl.metadata (15 kB)
Collecting textual==0.76.0 (from textual[syntax]==0.76.0->posting)
  Using cached textual-0.76.0-py3-none-any.whl.metadata (5.6 kB)
Collecting posting
  Using cached posting-1.12.0-py3-none-any.whl.metadata (15 kB)
  Using cached posting-1.11.0-py3-none-any.whl.metadata (15 kB)
  Using cached posting-1.10.1-py3-none-any.whl.metadata (31 kB)
Collecting textual==0.74.0 (from textual[syntax]==0.74.0->posting)
  Using cached textual-0.74.0-py3-none-any.whl.metadata (5.6 kB)
INFO: pip is still looking at multiple versions of textual[syntax] to determine which version is compatible with other requirements. This could take a while.
Collecting posting
  Using cached posting-1.10.0-py3-none-any.whl.metadata (31 kB)
  Using cached posting-1.9.3-py3-none-any.whl.metadata (30 kB)
  Using cached posting-1.9.2-py3-none-any.whl.metadata (30 kB)
Collecting textual==0.73.0 (from textual[syntax]==0.73.0->posting)
  Using cached textual-0.73.0-py3-none-any.whl.metadata (5.6 kB)
Collecting posting
  Using cached posting-1.9.1-py3-none-any.whl.metadata (30 kB)
  Using cached posting-1.9.0-py3-none-any.whl.metadata (30 kB)
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  Using cached posting-1.8.0-py3-none-any.whl.metadata (26 kB)
  Using cached posting-1.7.0-py3-none-any.whl.metadata (26 kB)
Collecting textual==0.72.0 (from textual[syntax]==0.72.0->posting)
  Using cached textual-0.72.0-py3-none-any.whl.metadata (5.6 kB)
Collecting posting
  Using cached posting-1.6.0-py3-none-any.whl.metadata (26 kB)
  Using cached posting-1.5.1-py3-none-any.whl.metadata (28 kB)
  Using cached posting-1.5.0-py3-none-any.whl.metadata (28 kB)
  Using cached posting-1.4.0-py3-none-any.whl.metadata (28 kB)
  Using cached posting-1.3.0-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.2.0-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.1.0-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.0.4-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.0.3-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.0.2-py3-none-any.whl.metadata (25 kB)
  Using cached posting-1.0.1-py3-none-any.whl.metadata (25 kB)
Collecting textual-autocomplete==3.0.0a8 (from posting)
  Using cached textual_autocomplete-3.0.0a8-py3-none-any.whl.metadata (5.8 kB)
Collecting posting
  Using cached posting-1.0.0-py3-none-any.whl.metadata (25 kB)
Collecting textual-autocomplete==3.0.0a7 (from posting)
  Using cached textual_autocomplete-3.0.0a7-py3-none-any.whl.metadata (5.8 kB)

PIP STDERR
----------
ERROR: Ignored the following versions that require a different python version: 0.21.0 Requires-Python <3.12,>=3.8
ERROR: Could not find a version that satisfies the requirement tree-sitter-languages==1.10.2; extra == "syntax" (from textual[syntax]) (from versions: none)
ERROR: No matching distribution found for tree-sitter-languages==1.10.2; extra == "syntax"
cat: -p: No such file or directory

Ah, I see. It's trying to use Python 3.13 which isn't supported.
Could you try pipx install posting --python 3.12?

Works 👍🏻
Thanks;
pipx install posting --python 3.12
installed package posting 2.0.1, installed using Python 3.12.7
These apps are now globally available
- posting
done! ✨ 🌟 ✨


Update Composer dependencies (2023-12-17-00-15)

Visual regression test passed!
View the visual regression test report


Periodic boundary conditions

It would be great to be able to specify periodic boundary conditions

I can only second that! I wanted to set up a simple prototype for a colleague who needs periodic BCs. I followed the tutorial and was stuck when trying to switch the BCs.

Should be relatively simple to add, as there is already some groundwork in place. Periodicity is the property of the grid (not documented though since unfinished), and selecting which fields should be copied over will be specified through the exchange keyword on kernel launch or exchange! function, which now are only used for MPI exchange.


Fix cannot remove block currency with mvm set command.

Fixes #2484.
To remove use of block currency we are supposed to set the property to -1. However, -1 is an invalid material type so you cannot run /mvm set currency -1 [worldname].
Looking into the code, to allow -1 as expection is probably going to be hard, so I changed it to setting currency to 0 is now considered as no currency value. Since, materialID 0 is just AIR, it should be ok. (doubt anyone set air as currency 😆)
Wiki will need to change as well to reflect this.

lets merge this


Add info about react-native channel on DiscordApp

Since it's official now https://facebook.github.io/react/blog/2015/10/19/reactiflux-is-moving-to-discord.html

Oh man I updated this in two other places already, so much redundancy haha! Thanks


unable to run "ask deploy"

Runing ask deploy leads to a "Required parameter(s) missing in the request." error.
here is some debug log:
[2023-03-12T20:20:57.954Z] - DEBUG - UPLOAD-SKILL-PACKAGE
PUT https://skill-uploads-prod-na.s3.amazonaws.com/amzn1.ask-package.upload.85f4bb8b-ef61-481e-a08f-abf950db14ea?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230312T202056Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=AKIA426DM2YL3VBIJQ6D%2F20230312%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=81af33fb04a06fddcfe5fc74ebb636c10f1c722c10b907b7dac58189abe1913b
status code: 200 OK

Request headers: {"User-Agent":"ask-cli/2.28.0 Node/v16.13.1 Windows_NT/10.0.19045","content-length":55625}

Request body: [object Object]

Response headers: {"x-amz-id-2":"+gx4+dpJt2t7wO+gLcAepfbrjFgXhIpYR3vAEZKNyCgjB+bz7jOlaLqTYiGqy95HisulwFHNLeI=","x-amz-request-id":"VJC3D3BA0S6Q8Y7H","date":"Sun, 12 Mar 2023 20:20:58 GMT","x-amz-expiration":"expiry-date=\"Mon, 20 Mar 2023 00:00:00 GMT\", rule-id=\"Clean up old uploads\"","x-amz-server-side-encryption":"aws:kms","x-amz-server-side-encryption-aws-kms-key-id":"arn:aws:kms:us-east-1:882488694295:key/7ce99451-cb86-4401-a69a-cf380132d654","etag":"\"0e89eff9f4aa40f954e0e3121c4486f6\"","server":"AmazonS3","content-length":"0","connection":"close"}
----------------------------------------
[2023-03-12T20:20:58.167Z] - DEBUG - IMPORT-PACKAGE
request-id: eb9b820f-99be-4496-a8e3-b6b2381f5bb0
POST https://api.amazonalexa.com/v1/skills/imports
status code: 400 Bad Request

Request headers: {"authorization":"Atza|IwEBINbONTX5jlEOnLfm8FJfpSqyUUzsNcpjDGSEqc6Ec6OUPC2mYPk6sC-vfWP08PQdqZnjx-cN6-MDANWhDxiyk2ftWhGHrKHSWmEYR7zesr7xvJTf52m-B9lVF_cXSWjhtghGl257fwvtm8xETUu8HElVo9GQT4UxowDUnv-l2sfd4lNwaUhjgZ-i64gx5mkoR4_7uaAtRPHg-0DSIUh2TlKbPp5Bvbft_DSeK28j2wylCMfWdpJwhabUif2FVJBCF6-WmIX7nZ9tC_NC6roRz04JDbilFtaLX0pRV2CVvdvRJrffdSo4JOqnfdaJ-MNnUJ20B8wub8p0hGMgEyLgSj74sSdLnUTidQbms-43Mv5ldnNFivi-UjbhCJywUuJbiQzBSaRo9Ju7Bxr7vHGl61q6KFOLQC0vXU_HefsqGB9Q8Yc3NNeb6tG1YpNGXYSkSh7CLoD0mGToo_ACsUHXMm9ilzWk8evLap-_cGI9NCnaYPOJYjId3N2TBsZZhMPnE5BwliI8zLHJWF1ZBshu-qIFsfaaecy-jX2cvC4-0ZGsaGmsQfa13E895KK06zOXaXXvKSjNmXrw7YBKJaF9InQaCC2jsblxFYY1Bd2lG1J8fZZ-aPy8bnSxcciAO-KEx2hJxG3WBQe8RynpOSjwIWmk","User-Agent":"ask-cli/2.28.0 Node/v16.13.1 Windows_NT/10.0.19045","accept":"application/json","content-type":"application/json","content-length":390}

Request body: {"location":"https://skill-uploads-prod-na.s3.amazonaws.com/amzn1.ask-package.upload.85f4bb8b-ef61-481e-a08f-abf950db14ea?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230312T202056Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=AKIA426DM2YL3VBIJQ6D%2F20230312%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=81af33fb04a06fddcfe5fc74ebb636c10f1c722c10b907b7dac58189abe1913b"}

Response headers: {"content-type":"application/json","content-length":"59","connection":"close","server":"Server","date":"Sun, 12 Mar 2023 20:20:58 GMT","x-amz-rid":"0SQS1ZSN199XVPKYV8FT","x-amzn-requestid":"eb9b820f-99be-4496-a8e3-b6b2381f5bb0","x-amz-date":"Sun, 12 Mar 2023 20:20:58 GMT","vary":"Content-Type,Accept-Encoding,User-Agent","strict-transport-security":"max-age=47474747; includeSubDomains; preload","x-cache":"Error from cloudfront","via":"1.1<PHONE_NUMBER>e677ce9bb8aedfd6e0ea04.cloudfront.net (CloudFront)","x-amz-cf-pop":"TXL50-P2","x-amz-cf-id":"TQ2eN0cyQmJt0SMox4O7_kyVyaaopSuE6CaWjuYyMjfUcJOjpzdqXQ=="}

Response body: {"message":"Required parameter(s) missing in the request."}

I will take a look at the error. I am still running this on my Echo Dot 4.
@ORi0N Can you say which part of the setup instructions are unclear so that I can modify/fix them

I'm having the same error: "[Error]: CliError: The lambda deploy failed for Alexa region "default": InvalidParameterValueException: The runtime parameter of nodejs12.x is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs18.x) while creating or updating functions."
Part 4 and 5 of the instructions are unclear, im not and advanced developer and it is unclear to me what to do after deploying.
Thanks in advance, looking forward to this!

I think the code requires some change related to node version. Will update the node version , rebuild and then push the changes.

Yeah I also thought of that, thank you, let us know when the changes have been pushed and also if you could be a but more detailed on what to do after deploying that would be awesome since I'm not nich of a code development savy.

Yeah, it was the node version, I changed it in the ask-resources.json and i was able to deploy it fine. I generated my Youtube API, but I really have no clue on what to do next, or where do I put this API.

Alright I figured it out, however when it is running on my echo dot, and I say play (song) it just says, you just triggered playSongIntent, and checking the JSON for the intents there's no handlers for the intent so I don't know if this is a problem on my end.

Thans, Changed in ask-resources.json to 18.x and now it works:
"skillInfrastructure": {         "userConfig": {           "runtime": "nodejs18.x",
==================== Enable Skill ====================
The skill has been enabled.
What's next ?

And where do you add the YOUTUBE API KEY?
Here?

That's where I added it, did you manually input the key name? Or was it already there? I am talking about "YOUTUBE_API_KEY"

I had to manually add it, was nothing there.
You anu further? I am afraid we’ll need the dev for answers.
On Sun, 18 Jun 2023 at 18:35, Kewz4 @.***> wrote:

That's where I added it, did you manually input the key name? Or was it
already there? I am talking about "YOUTUBE_API_KEY"
—
Reply to this email directly, view it on GitHub
https://github.com/akhilerm/youtube-music-alexa-skill/issues/1#issuecomment-1596199212,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFLFXL47JMQYLXKRPJWYRTXL4U4XANCNFSM6AAAAAAVYKMUVQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Yes, I went further, go into the Amazon developer console > Alexa Skill Set and you can see the skill set there and do any changes and build.
Then you go into your Alexa app > skills > scroll down into custom skills > developer and it should be there.
However the skill doesn't do anything when I ask it to play music, it recognizes the invitation command but that's it.
We can also talk on discord if you want, my username is just kewz. (with a period)

Here it just says 'I have trouble doing what you asked' on whatever I ask it.

Try saying launch the "invitation name" skill.

Well, it's not that it's not launching. That works.
It's also activated successfully:

And the skill is Lambda is triggered successfully too:

The error message, when troubleshooting led me to the fact that the Youtube API v3 was not enabled in the project. I could easily do this using: https://console.cloud.google.com/apis/dashboard?project=yourprojectname
And now Alexa answers me what it will play, but it remains silent afterwards :(
And it throws this error in the logs:
2023-06-23T11:58:21.855Z	0a331ae9-34bd-4717-b696-50c38b7eb8dc	INFO	~~~~ Error handled: AskSdk.GenericRequestDispatcher Error: Unable to find a suitable request handler.     at createAskSdkError (/var/task/node_modules/ask-sdk-runtime/dist/util/AskSdkUtils.js:23:19)     at GenericRequestDispatcher.dispatchRequest (/var/task/node_modules/ask-sdk-runtime/dist/dispatcher/GenericRequestDispatcher.js:72:55)     at async GenericRequestDispatcher.dispatch (/var/task/node_modules/ask-sdk-runtime/dist/dispatcher/GenericRequestDispatcher.js:45:22)     at async CustomSkill.invoke (/var/task/node_modules/ask-sdk-core/dist/skill/CustomSkill.js:68:26)

I've forked and submitted the changes we made to get it working @akhilerm . Thanks again for the dev.

It's however not playing all content. Some songs work fine, and when checking in the logs:
Working song:
2023-06-23T15:36:24.093Z	57899906-6ec6-4221-b9ee-0134fe4095fe	INFO	{   mimeType: 'audio/webm; codecs="opus"',   qualityLabel: null,   bitrate: 142160,   audioBitrate: 160,   itag: 251,   initRange: { start: '0', end: '265' },   indexRange: { start: '266', end: '653' },   lastModified: '1685999978500351',   contentLength: '3778546',   quality: 'tiny',   projectionType: 'RECTANGULAR',   averageBitrate: 134598,   audioQuality: 'AUDIO_QUALITY_MEDIUM',   approxDurationMs: '224581',   audioSampleRate: '48000',   audioChannels: 2,   loudnessDb: 0.10999966,   url: 'https://rr3---sn-p5qlsny6.googlevideo.com/videoplayback?expire=1687556182&ei=9ruVZODOM4zn8wSxyLioDA&ip=<IP_ADDRESS>&id=o-AOCNvmfn6xttLzecQpYm1dVWM-3tWGojlKqpo-UMnt7o&itag=251&source=youtube&requiressl=yes&mh=Gm&mm=31%2C29&mn=sn-p5qlsny6%2Csn-p5qddn7d&ms=au%2Crdu&mv=m&mvi=3&pl=11&initcwndbps=1035000&spc=qEK7B411jiKmyBtoFhGOasuJCdr_9uM3pAlgSApuuw&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=8Nc7rU8j8bJhnwqhimXpcOYN&gir=yes&clen=3778546&dur=224.581&lmt=1685999978500351&mt=1687534149&fvip=5&keepalive=yes&fexp=24007246&c=WEB&txp=4432434&n=LMtgWyE3ZWOQ8A&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgS2vCF-IgpSbYwcr8G68NOtHzCTbWRmA1eBwd27DKIBQCIQDFSMoX2OuGn_77ZCNrimBX57DdA_3C6r-9Ay6gPr8AnQ%3D%3D&sig=AOq0QJ8wRQIgKeu7_k0y9HAe73G2t4eV6q6rvvfnDaNGUZn4GyQSFXACIQC725c1F-Jfd4mLvl9RHeBieDjjOIbzyGwR7ryKA9uIVg%3D%3D',   hasVideo: false,   hasAudio: true,   container: 'webm',   codecs: 'opus',   videoCodec: null,   audioCodec: 'opus',   isLive: false,   isHLS: false,   isDashMPD: false }
Not working song:
2023-06-23T15:50:35.789Z	6c9f11dd-43f1-4deb-9fab-b52a5f632a61	INFO	{   mimeType: 'video/mp4; codecs="avc1.64001F, mp4a.40.2"',   qualityLabel: '720p',   bitrate: 377577,   audioBitrate: 192,   itag: 22,   width: 1280,   height: 720,   lastModified: '1681982993805470',   quality: 'hd720',   fps: 25,   projectionType: 'RECTANGULAR',   audioQuality: 'AUDIO_QUALITY_MEDIUM',   approxDurationMs: '8179948',   audioSampleRate: '44100',   audioChannels: 2,   url: 'https://rr2---sn-p5qlsnrr.googlevideo.com/videoplayback?expire=1687557034&ei=Sr-VZL6tMIOb8wS4w7bgBg&ip=<IP_ADDRESS>&id=o-ADI-w4YWsJaTU9uzoCh1m_C6vkajhDfq91J3qcbSIARN&itag=22&source=youtube&requiressl=yes&mh=um&mm=31%2C29&mn=sn-p5qlsnrr%2Csn-p5qddn7r&ms=au%2Crdu&mv=m&mvi=2&pl=11&gcr=us&initcwndbps=818750&spc=qEK7B3p563lfMOctz79L3vqx9QP3P1KntcqhvChGQg&vprv=1&svpuc=1&mime=video%2Fmp4&ns=I1qqQAbCMDfD0g-Cx7xD3skN&cnr=14&ratebypass=yes&dur=8179.948&lmt=1681982993805470&mt=1687535107&fvip=3&fexp=24007246&c=WEB&txp=4532434&n=8vCvglpSBvnHLg&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cgcr%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Ccnr%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgOjfaoNrPyjeMzhgzr0beoue0nDG9Z9yqPtQTAFxkqqoCIQCL6afcMXbhykVd8kMU31hd_0SYavZfmmQE0dT8ILxWpw%3D%3D&sig=AOq0QJ8wRQIgSCBFsqf2lou_VWnkfJwjoA7jipTe7i52UVqzAgvsJnwCIQDXrLk70lIgaeuiKMA0NLwxnkuRWxWfogj4d11ubNe6Mw%3D%3D',   hasVideo: true,   hasAudio: true,   container: 'mp4',   codecs: 'avc1.64001F, mp4a.40.2',   videoCodec: 'avc1.64001F',   audioCodec: 'mp4a.40.2',   isLive: false,   isHLS: false,   isDashMPD: false }

@ORi0N @Kewz4 I have migrated the skill to an Alexa hosted skill instead of self hosted for easier development and monitoring. This makes sure that many of the details are hidden from user and it is easier to deploy. I still have to add a migration step for existing users, but new users can easily use the new alexa hosted skill.
It would be great if you can look at the current doc and check if I am missing something.
Also, regarding some songs not working. @ORi0N can you list the exact query used. I have raised an issue with ask sdk, https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs/issues/723, but havent got any traction so far.
Thanks for trying out this

The exact command used is
Open youtube + Play Avicii - you make me
Query:
2023-08-27T19:08:07.408Z	INFO	{   kind: 'youtube#searchResult',   etag: 'm1U7P4FmX0SmtMReYv4ntpUCRVA',   id: { kind: 'youtube#video', videoId: '2GADx4Hy-Gg' },   snippet: {     publishedAt: '2013-09-16T13:00:35Z',     channelId: 'UC1SqP7_RfOC9Jf9L_GRHANg',     title: 'Avicii - You Make Me (Official)',     description: "Listen to Avicii's latest single “SOS” here: https://Avicii.lnk.to/SOS.",     thumbnails: { default: [Object], medium: [Object], high: [Object] },     channelTitle: 'AviciiOfficialVEVO',     liveBroadcastContent: 'none',     publishTime: '2013-09-16T13:00:35Z'   },   videoId: '2GADx4Hy-Gg' }
Leads to:
 mimeType: 'audio/webm; codecs="opus"',   qualityLabel: null,   bitrate: 144812,   audioBitrate: 160,   itag: 251,   initRange: { start: '0', end: '265' },   indexRange: { start: '266', end: '670' },   lastModified: '1574706181940362',   contentLength: '3711890',   quality: 'tiny',   projectionType: 'RECTANGULAR',   averageBitrate: 128761,   audioQuality: 'AUDIO_QUALITY_MEDIUM',   approxDurationMs: '230621',   audioSampleRate: '48000',   audioChannels: 2,   loudnessDb: 5.0132666,   url: 'https://rr2---sn-p5qs7nsk.googlevideo.com/videoplayback?expire=1693184887&ei=F5_rZL7WG4rh8wT_nLGIBA&ip=<IP_ADDRESS>&id=o-AATvH8Nt1tm6GzMLokn3G4IdY0WNP-o7xLEBOs6RRQfb&itag=251&source=youtube&requiressl=yes&mh=MD&mm=31%2C26&mn=sn-p5qs7nsk%2Csn-ab5sznzr&ms=au%2Conr&mv=u&mvi=2&pl=22&gcr=us&spc=UWF9f6g1KcWZWSM38X6zgyTHKSGgnXGPrYJxvI2U8w&vprv=1&svpuc=1&mime=audio%2Fwebm&ns=4X367NPDZBvzApl60agIw7EP&gir=yes&clen=3711890&dur=230.621&lmt=1574706181940362&mt=1693162768&fvip=5&keepalive=yes&fexp=24007246%2C51000011&beids=24472436&c=WEB&txp=5531432&n=C4ppJD_zbnlXXw&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cgcr%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl&lsig=AG3C_xAwRQIhAPQBQ_rUFXqdS8OW2V25fYgm_FLSpBFWo5vsw_QxU27rAiAhtwKQIcoYVEXzJS4j7aa_vVZmcbhXfP479tuRgodySA%3D%3D&sig=AOq0QJ8wRQIgOgR7PeQpiSxxjlrtUI48zeR6BKEHcSRCiMUmVGc74moCIQDLPI5P-i2SM7kVIjIhW4UB5DG6BJRbvWAU0TsUDEj2JA%3D%3D',   hasVideo: false,   hasAudio: true,   container: 'webm',   codecs: 'opus',   videoCodec: null,   audioCodec: 'opus',   isLive: false,   isHLS: false,   isDashMPD: false
That doesn't play

Just reproduced this issue on my Echo Dot 4. Did some digging around, but  TBH I am not able to understand why its not playing this music.

Can this issue be closed, and we can create another issue for some songs not playing?

Yes it can. There is indeed still the problem of certain songs not playing which almost renders the skills useless today ;)

Issue with some songs not playing is discussed here. https://github.com/akhilerm/youtube-music-alexa-skill/issues/6


A treadmill that can be connected to furnaces, droppers, anything Redstone related

NO HAMSTER BALLS BECAUSE IT WILL HURT THEIR LITTLE SPINES
A treadmill with two bowls at the front, one for food and one for water that will have to be refilled for the guinea pig to keep walking

after #19