Proposal: change behavior of set-schema and get-schema to be more intuitive

Currently, the behavior is as follows:

Outside of dev mode, you need to run set-schema with at least an empty schema after hz-init, or else everything will fail with cryptic error messages because some internal data don't exist yet.
When you run set-schema, it looks at the current working directory to get the project name.

If no project with that name exists, it will create it (!!!).
If the current working directory has an invalid project name, it fails in an extremely cryptic way.

Both of these behaviors were pretty unintuitive to me.  The second one was especially bad; if you run set-schema from the wrong directory (and I didn't even realize there was a "wrong directory"), it just silently uses a different project.
@Tryneus explained to me that a major design goal is to let people have multiple Horizon projects in the same RethinkDB cluster, which makes sense and explains why set-schema needs to be told what project to use.  From my perspective as a newish user, though, it didn't make any sense; I told Horizon to serve a project, and it started its own database, then I connected to that database with set-schema, so I expected it to set the schema for that one project.

Here's how I think it should work instead:

Running hz init should also set an empty schema so that you aren't in a weird intermediate state.
hz set-schema should:

Use the project name it was passed (if it was passed one).
Otherwise, if there is only one Horizon project in the database (which will be true 99% of the time), use that project.
Otherwise, error out and tell people to specify which project to use.  (I think looking at the CWD to get the project name makes a lot of sense for hz init ., but not much sense at all for set-schema and get-schema.)

See #548 to address hz init point

@dalanmiller do you know if

When you run set-schema, it looks at the current working directory to get the project name.
If no project with that name exists, it will create it (!!!).
If the current working directory has an invalid project name, it fails in an extremely cryptic way.

is still the case for schema apply ?

This needs validation since 2.0.0 rewrote set/get-schema. Maybe @mlucy could comment if your concerns are addressed?


Allow extra args to Closure compiler

This simple change just allows extra Closure Compiler arguments to be passed in through j2cl_application.

extra_production_args is added to macro quite a while back. Closing this.


Horizontal form is unable to align long label vertically with input

I have got a long label next to my input and according to my review there is no way how to align them vertically (without setting a margin property on the long input what cannot be done automatically) in horizontal form. It is OK with a short label.
 <form class="form-horizontal" role="form">

        Labdas kjas kljas dlkjasd lksjd el1

      <input type="text" class="form-control" id="input1" placeholder="Input1">

    Label2

      <input type="password" class="form-control" id="input2" placeholder="Input2">

</form>

thanks


PEP crashes when authenticating with IoT sensor

Hi,
I'm having the following situation: I installed Keyrock IdM and Wilma PEP successfully, secured an
Orion CB instance behind the proxy and authenticated with an authorized user. Everything OK.
The problem arose when I tried to set up an IoT sensor in the IdM. This is what happened:

The sensor was successfully set up
I could retrieve a token from the IdM via its API
When I try to access the secured Orion, the request freezes and I don't get any response back.

Digging a little bit in the code, I tracked down the path it takes to verify a token:

The PEP queries the IdM to authenticate the token idm.js:107.
The IdM checks the token which could be either of type user, or iot.
As this case is an iot sensor, it checks the correct table of the DB and returns the following (this was made with a direct query to the IdM endpoint, not through the PEP):

{
    "displayName": "",
    "roles": [],
    "app_id": "ebae51aa-4887-4f2d-b0dc-ee65c68aa8af",
    "trusted_apps": [],
    "id": "iot_sensor_64b82539-854d-477b-8369-b68ba4243516",
    "app_azf_domain": ""
}

The response in the PEP implementation is treated as a user, and line 114 maps the users organizations:
const organizations = userInfo.organizations.map(elem => elem.id);
Which is undefined, thus the corresponding error arises:
ERROR: Server - Caught exception: TypeError: Cannot read property 'map' of undefined

Am I doing anything wrong here?
I'm running both services with docker, PEP latest version and IdM version 7.6.
Any help would be appreciated

Updated the IdM to latest version and the problem persisted


Group user list sort

Fixes #186
Add sorting on the columns of the user list in the group composition tab.

Codecov Report

Merging #207 (b8ea9d6) into master (fa67343) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #207   +/-   ##
=======================================
  Coverage   39.75%   39.75%
=======================================
  Files         100      100
  Lines        1298     1298
  Branches      243      243
=======================================
  Hits          516      516
  Misses        751      751
  Partials       31       31

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 fa67343...b8ea9d6. Read the comment docs.

I changed the way the data is fetched, now I use the state interface to return the data, and I pass the inputs to switchMap instead of using the component's this


BLD: update requirements + add setuptools to fix build issue

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found some lint.
Here's what I've got...
For recipe/meta.yaml:

requirements: run: scipy>=1.0.0 must contain a space between the name and the pin, i.e. scipy >=1.0.0

For recipe/meta.yaml:

License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.

Documentation on acceptable licenses can be found here.

Hi! This is the friendly automated conda-forge-webservice.
I tried to rerender for you, but it looks like there was nothing to do.
This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11485994468.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe/meta.yaml:

License is not an SPDX identifier (or a custom LicenseRef) nor an SPDX license expression.

Documentation on acceptable licenses can be found here.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.


Tag a release or release candidate in github and submit to Fedora

This should be code that has passed the regression suite that Dennis created earlier.

Can this ticket be closed? I was under the impression that this has been done


Simplifying acceptance step

This should be identical but with less code.
cc @eigenfoo

A similar edit should probably be made to the _slow version too? This is an awful lot of blog posts that @ColCarroll is subjecting us to.

Superceded (kind of) by #10 😢

:cry:


Change PD texts

This PR changes some texts on the PD form to the updated one
Testing instructions
The texts of the Project developer account creation form  will be changed as defined in [SHARED] HeCo Platform - Phase 02
Tracking
LET-340

@barbara-chaves Two changes are missing:

The about field has a character limit of 600 (instead of 500). This hasn't been fully changed on the designs but it's how it's described in the BR document.
In the categories info tooltip, the description of the last item has changed.

The categories info came from the back end, so I am going to ask them to change it.

@barbara-chaves Will the back-end team update this PR or will they do the change separately?


How to import proto file in different packages with same name?

Consider following case:
A/n.proto defines a TestA message, and B/n.proto defines a TestB message. When import B/n.proto into A/m.proto, and use TestB, generated sources always import TestB via super::n::TestB. However, super::n is A/n.proto, which doesn't contain TestB, hence lead to compilation error.
Related to #189.

+1 Is there any preferable workaround for this issue?
I also have this problem when importing google.api types which i'm building in its own module namespace;
package foo.bar; // located in src/foo/bar.protos
message Response {
google.rpc.Status status = 0;   // located in src/google/rpc/status.proto
}
The rust code generated by protoc for foo.bar package trys to use super::status::Status which will result in an compilation error (because the type is located in protos::google::rpc::status::Status)

It would appear this is still a problem. Included protos should not use super:: at the top level. This irreparably breaks the generated code.

I'm facing the same issue and I agree that using absolute references would be better than using super::.
In case of (for example) Go, it is possible to annotate Protobuf files with an option go_package defining the import path. This also solves the case when different Protobuf files are split across multiple (Go) packages. E.g. when using the "well known" Timestamp type, it will automatically import this definition from github.com/golang/protobuf/ptypes/timestamp. This import-path defined here: https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/timestamp.proto#L37.
When generating Rust code, the Timestamp is of type ::protobuf::well_known_types::Timestamp. I guess the mapping of "well known types" is kept in the Rust Protobuf compiler source. Maybe an option rust_package could 1) make these imports more explicit 2) solve the issue of the super:: imports as it allows users to explicitly define how types within a Protobuf file must be imported.  (in case of the timestamp.proto it could have an option rust_package = "protobuf::well_known_types").

Issue still exists. As a workaround, I'm post-processing generated rust to replace all super:: with an absolute crate::.... It's certainly not ideal, but it does work.


LSP integration sample: integrate with neovim's progress report

Turns out neovim already has its own $/progress handler.
We should probably not override it, but listen to the autocommand.
Also see https://github.com/j-hui/fidget.nvim/issues/51
(Not part of the plugin itself, only regarding code in the wiki. Leaving this here for discussion. Maybe I will fix this myself some time later)

Ah good point, feel free to update or I'll get to it when I have a chance :ok_hand:

Howdie folks,
I thought I'd give this a try, but I'm a bit stuck
❯ nvim --version
NVIM v0.7.0

I've inserted the following right next where I've but the current snippet from the wiki, but the print() never happens, even when I can see notifications from the wiki snippet just fine
vim.api.nvim_create_autocmd({ "User" }, {
  desc = "show progress as notifications",
  callback = function(opts)
    print(vim.inspect(opts))
  end,
  pattern = { "LspProgressUpdate" },
})

If I change the pattern to "*" then I can see "LspRequest" events coming through, just never "LspProgressUpdate" events
Do I need to do something specific to enable the LspProgressUpdates? I think I'm using a new-enough nvim, but is this only in nightly or something maybe?
Cheers!

I took a stab at this this morning and got a pretty good solution I think:
local client_notifs = {}
local spinner_frames = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" } -- spinners

local function update_spinner(notif_data) -- update spinner helper function to defer
  if notif_data.spinner then
    local new_spinner = (notif_data.spinner + 1) % #spinner_frames
    notif_data.spinner = new_spinner

    notif_data.notification = vim.notify(nil, nil, {
      hide_from_history = true,
      icon = spinner_frames[new_spinner],
      replace = notif_data.notification,
    })

    vim.defer_fn(function()
      update_spinner(notif_data)
    end, 100)
  end
end

vim.api.nvim_create_augroup("lsp_notify", { clear = true }) -- create augroup
vim.api.nvim_create_autocmd("User", {
  pattern = "LspProgressUpdate", -- LSP Progress Update autocommand
  group = "lsp_notify",
  desc = "LSP progress notification",
  callback = function()
    local bufnr = vim.api.nvim_get_current_buf() -- get buffer number
    for _, client in pairs(vim.lsp.buf_get_clients()) do -- loop over each client to check notifications
      if not client_notifs[bufnr] then -- create buffer specific notification table if not exists
        client_notifs[bufnr] = {}
      end
      if not client_notifs[bufnr][client.id] then -- create buffers client  specific  notification table if not exists
        client_notifs[bufnr][client.id] = {}
      end
      local notif_data = client_notifs[bufnr][client.id] -- set notif_data variable
      local progress = nil
      for _, progress_msg in pairs(client.messages.progress) do
        progress = true -- expose if a progress exists
        if not progress_msg.done then
          progress = progress_msg -- get clients first not done progress messages
          break
        end
      end
      if type(progress) == "table" and progress.percentage and progress.percentage ~= 0 then -- if there is a progress message
        local notify_opts = {} -- define notification options
        local new_msg = notif_data.notification == nil -- if it's a new message set different options
        if new_msg then -- for new messages set a title, initialize icone and disable timeout
          notify_opts = {
            title = client.name .. (#progress.title > 0 and ": " .. progress.title or ""),
            icon = spinner_frames[1],
            timeout = false,
          }
        else -- for existing messages just update the existing notification
          notify_opts = { replace = notif_data.notification }
        end
        notif_data.notification = vim.notify( -- notify with percentage and message
          (progress.percentage and progress.percentage .. "%\t" or "") .. (progress.message or ""),
          "info",
          notify_opts
        )
        if new_msg then -- if it's a new message, start the update spinner background job
          update_spinner(notif_data)
        end
      elseif progress and not vim.tbl_isempty(notif_data) then -- if there is finished progress and a notification, complete it
        notif_data.notification = vim.notify(
          "Complete",
          "info",
          { icon = "", replace = notif_data.notification, timeout = 3000 }
        )
        notif_data = {} -- clear notification data
      end
    end
  end,
})

LTGM, feel free to replace the existing implementation :smile:

I tried it and it looks good, but it seems to struggle mit multiple progress reports like rust-analyzer has.

I've inserted the following right next where I've but the current snippet from the wiki, but the print() never happens, even when I can see notifications from the wiki snippet just fine
vim.api.nvim_create_autocmd({ "User" }, {
  desc = "show progress as notifications",
  callback = function(opts)
    print(vim.inspect(opts))
  end,
  pattern = { "LspProgressUpdate" },
})

If I change the pattern to "*" then I can see "LspRequest" events coming through, just never "LspProgressUpdate" events
Do I need to do something specific to enable the LspProgressUpdates? I think I'm using a new-enough nvim, but is this only in nightly or something maybe?
Cheers!

@jokeyrhyme Guess you add this without deleting the code snippet from the wiki?
LspProgressUpdate event is actually triggered in neovim's builtin "$/progress" handler. If you override vim.lsp.handlers["$/progress" ] , then this event will never be triggered.

@ZenLian ah, yes, you're absolutely right, haha, thanks! <3

@mehalter the spinner isn't spinning, because notif_data.spinner never gets set to any value and the update_spinner never actually does something.
I guess, notif_data.spinner = 1 should happen for the first progress notification.

There is also a notif_data.spinner = nil assignment missing for when the the progress is complete. The notif_data = {} assignment doesn't help, because the update_spinner function will continue to use the original object.

I tweaked the implementation a bit to avoid global states and split spinner and LSP logic:
https://github.com/mitinarseny/dotfiles/blob/b77c1515baad64a863af05c79c2b5e15ec2408af/.config/nvim/after/plugin/lsp.lua#L172-L230
https://github.com/mitinarseny/dotfiles/blob/b77c1515baad64a863af05c79c2b5e15ec2408af/.config/nvim/lua/spinner.lua

@mitinarseny thanks! This works like a charm!

@rcarriga would you like to include the code in the project? It would be nice to have a central place for it where bugs can be fixed and code shared. I feel like the wiki is not a good place to track bug fixes and it is quite a big chunk of code with potentials to break it.

I don't want this code to live in nvim-notify, the repo is relatively simple and I don't want to maintain use cases that I don't use. However if someone wishes to create a repo for them, I'd be happy to link them in the README!


mysql reject connection when i add volume to mysql in docker-compose.yml

Hi, I have a problem, I added volumes to mysql so that my data would not disappear by running the command "docker-compose down", I added:
volumes:
-./mysql:/var/lib/mysql

to the mysql configuration in the file docker-compose.yml along with the mysql directory at the root of the project, it doesn't give me errors when giving "docker-compose up" but when I try to do anything to the database, it rejects the connection with error 2002, even if I try to enter with heidi to the host and port rejects the connection, what can it be?

anything informative in the output of docker logs -f mysql ?
Is the volume mounted to the container? (check docker inspect mysql)

@bsholdice  este es el error que me sale :

that is a failure to resolve the mysql host. doublecheck your .env entry for DB_HOST. Check the docker-compose.yaml file and confirm that nginx, mysql, php and  composer services all are attached to the  laravel network. Troubleshoot it by opening a shell on your php service (something like docker-compose exec mysql sh) and confirm it can resolve your mysql host by hostname. you may need to add necessary troubleshooting packages (ping, dig etc)

Hey I ran into the same problem.
I simply forgot to update the .env file in my laravel project to
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

I have the same error about not connecting to the mysql when doing artisan migrate.
Now when I try to connect with SQL Pro I have error:
MySQL said: Access denied for user<EMAIL_ADDRESS>(using password: YES)
Why <IP_ADDRESS>? It was <IP_ADDRESS> , and that's the ip I gave.
docker inspect mysql give this:
"IPAddress": "<IP_ADDRESS>",
logs:
2020-05-13T16:20:42.290828Z 2 [Note] Access denied for user<EMAIL_ADDRESS>(using password: YES)
2020-05-13T16:21:08.413553Z 3 [Note] Access denied for user<EMAIL_ADDRESS>(using password: YES)
2020-05-13T16:26:07.995611Z 4 [Note] Access denied for user<EMAIL_ADDRESS>(using password: YES)

As a follow up, I connected using <IP_ADDRESS> , login and pass in TablePlus, same data in .env in Laravel install doesn't work -> artisan can't migrate data
Could anyone who has mysql working put data from docker-compose.yml and .env (without pass of course :D)

I think the best thing for you would be to watch this tutorial by the repo owner himself.
In this video he goes over the setup step by step and around the 12min mark he talks about php artisan migrate

For others information - you need to put mysql or pgsql as your host, not localhost or <IP_ADDRESS> even though it works with <IP_ADDRESS> in SQL Pro or TablePlus

(Please skip step 1, 2 and 3 if the container/service name i.e. "mysql" works fine for DB_HOST.)

Fire this command to check the IP addresses of each services in the network:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

You will see output something like this:
/composer -  /nginx - <IP_ADDRESS> /artisan -  /php - <IP_ADDRESS> /npm -  /mysql - <IP_ADDRESS>

Grab the IP address of mysql from Step #2 and update in DB_HOST's value in .env file.

(Please skip step 1, 2 and 3 if the container/service name i.e. "mysql" works fine for DB_HOST.

Fire config clear
docker-compose run --rm artisan config:clear

Fire cache clear
docker-compose run --rm artisan cache:clear

Fire migrate refresh
docker-compose run --rm artisan migrate:refresh

I solved it by adding my volume to the end of my docker-compose.yml file
here i use my dbdata volume:

and here I declare it at the end of my docker-compose.yml

I want to suppose that I was trying to use a volume that was not declared (I thought it would add the volume in automatic if it was not declared, but in my case it did not work like this)

Looks like this issue has been resolved a few different ways and there hasn't been any activity in a while. If anyone has any updates for this, please feel free to open a new ticket and reference this one!


Break apart Node into Components and Systems

Overview
Well this is going to be really fun.
When attempting to integrate legion I discovered that Node, the core structure in Hotham is completely incompatible. This is because, in essence Node is doing what legion wants to do - hold all the data and behaviour of the system in one place. Specifically, it's because Node looks like this:
struct Node {
  parent: Weak<Node>, // not 'static + Sized + Send + Sync !
  children: Vec<Rc<Node>>, // 'static + Sized + Send + Sync !
}

The solution is to break Node apart into its various Components (structs) and Systems (functions).
In essence, this is far closer to the actual representation of a gltf file: a discrete set of components with loose references to each-other, rather than an OOP-style graph structure like I've currently got.
Onwards!
TODO

[ ] Create Transform component
[ ] Create Skin component
[ ] Create Animation component
[ ] Create animation system
[ ] Create Mesh component
[ ] Create render system

Found a good resource for "flattening" scene graphs and animations here

Still having issues trying to reference another entity from inside an entity:
cannot borrow `*world` as mutable because it is also borrowed as immutable
mutable borrow occurs here

Got this to work with for_each_unchecked:
#[system]
#[write_component(Transform)]
pub fn animation(world: &mut SubWorld) -> () {
    println!("Running system..");
    let mut query = <(&mut Transform,)>::query();
    unsafe {
        query.for_each_unchecked(world, |t| {
            let (mut transform,) = t;

            let local_matrix = get_local_matrix(transform);

            if let Some(parent) = transform.parent.as_ref() {
                let parent = world.entry_ref(*parent).unwrap();
                let parent_transform = parent.get_component::<Transform>().unwrap();
                transform.global = parent_transform.global * local_matrix;
            } else {
                transform.global = local_matrix;
            }
        })
    }
}

legion is actually helping to put a bit of structure on the whole engine. Looking at this kind of structure to start with, we'll see how it goes:

resources -> anything that would be used as a resource by a system
systems -> systems and their states
schedule_functions -> one time functions executed in a schedule
components -> components used by systems

Difficult problems to solve:

How do we bring a Mesh from gltf into the world? It has many entities. What's a good "container" for those entities? A World? Could each "model" exist as its own world initially, then it get added into the world?
Remember that entity insertion order is critical for maintaining parent/child relationships
How can parent/child relationships be preserved when moving from "the model world" into "the actual world"?
Is there a need to group these entities together? I keep thinking about parent/child relationships, but the whole point of parent/child relationships is that once the relationship is established, you shouldn't need to think about it again.


hot-key "shift+left" can not select word in "input of find or find all"

hot-key "shift+left" indicate the function of "cursorLeftSelect".
This function can running well, but can not select word in "input of find or find all".

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Release 1.4.0

Update to only check links prefixed by one of =", (, <,  (a space).
Linkie now finds all unique links at once, then uses multithreading to check them all.
Linkie now rechecks links that had a ConnectionError, as these are often valid.
Broken links in the SUMMARY are now also displayed with their status code.
Dependency updates:

Update PyYaml from 4.2b4 to 5.1.1.
Update requests from 2.19.1 to 2.22.0.

Linkie is reporting a 404 on one of the archive links we introduced in the latest CSFG release, see https://github.com/uccser/cs-field-guide/issues/1093. However the link in the PR is only part of the url(s) (there's 3) we have provided in the code and all of the links work fine in production.
Something to investigate?


CI: fix path to crate-version-tag, add compressed runtime

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 40.704%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
111

Relevant Lines:
209

💛  - Coveralls


Move API documentation to new doc directory

Move all the REST API usage examples from the README.md to a new /docs directory, under usage.md.
The README.md is too cluttered at the moment, and needs to be broken into smaller docs that can be linked from this file.

Since it was an easy fix, I have already submitted a PR
Please review it and let me know if any further changes are required.


Allow mod and clamp to accept Vec

As discussed here https://github.com/chriselrod/LoopVectorization.jl/issues/174#issuecomment-749622682
Doesn't yet test on VecUnroll, because if I try to include fld there,
julia> f = fld
fld (generic function with 11 methods)

julia> check_within_limits(tovector(@inferred(f(m1, i))), f.(xi3, i))
ERROR: AssertionError: sizeof(T1) == sizeof(T2)

which I think is caused by this Int32:
julia> x, y = promote(m1.data[2], 3)
(Vec{4,Int32}<1, 2, 3, 4>, Vec{4,Int64}<3, 3, 3, 3>)

julia> d = div(x, y)
Vec{4,Int64}<0, 0, 1, 1>

julia> d - (signbit(x ⊻ y) & (d * y != x))
ERROR: AssertionError: sizeof(T1) == sizeof(T2)

julia> convert(Vec{4, Int64}, m1.data[2])
Vec{4,Int32}<1, 2, 3, 4>

Codecov Report

Merging #28 (47f768c) into master (2c3f22c) will decrease coverage by 1.94%.
The diff coverage is 45.45%.

@@            Coverage Diff             @@
##           master      #28      +/-   ##
==========================================
- Coverage   54.26%   52.32%   -1.95%
==========================================
  Files          28       28
  Lines        2652     2607      -45
==========================================
- Hits         1439     1364      -75
- Misses       1213     1243      +30

Impacted Files
Coverage Δ

src/special/misc.jl
46.15% <45.45%> (+12.82%)
:arrow_up:

src/alignment.jl
20.00% <0.00%> (-33.34%)
:arrow_down:

src/llvm_intrin/binary_ops.jl
32.75% <0.00%> (-23.18%)
:arrow_down:

src/llvm_intrin/conversion.jl
52.54% <0.00%> (-14.68%)
:arrow_down:

src/llvm_types.jl
70.68% <0.00%> (-12.39%)
:arrow_down:

src/promotion.jl
30.76% <0.00%> (-4.95%)
:arrow_down:

src/llvm_intrin/intrin_funcs.jl
59.80% <0.00%> (-4.79%)
:arrow_down:

src/llvm_intrin/masks.jl
62.45% <0.00%> (-4.34%)
:arrow_down:

src/ranges.jl
37.64% <0.00%> (-1.89%)
:arrow_down:

src/vector_width.jl
48.38% <0.00%> (-1.62%)
:arrow_down:

... and 11 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 2c3f22c...47f768c. Read the comment docs.

I've upgraded most of the tests to VecUnroll now, but some still fail, not sure why yet:
julia> check_within_limits(tovector(@inferred(f(m1, vi2))), f.(xi3, xi2))
ERROR: promotion of types VectorizationBase.VecUnroll{3, 4, Int64, MM{4, 1, Int64}} and VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}} failed to change any arguments
Stacktrace:
 [1] error(::String, ::String, ::String)
   @ Base ./error.jl:42
 [2] sametype_error(input::Tuple{VectorizationBase.VecUnroll{3, 4, Int64, MM{4, 1, Int64}}, VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}}})
   @ Base ./promotion.jl:330
 [3] not_sametype(x::Tuple{VectorizationBase.VecUnroll{3, 4, Int64, MM{4, 1, Int64}}, VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}}}, y::Tuple{VectorizationBase.VecUnroll{3, 4, Int64, MM{4, 1, Int64}}, VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}}})
   @ Base ./promotion.jl:324
 [4] promote
   @ ./promotion.jl:307 [inlined]
 [5] fld(x::VectorizationBase.VecUnroll{3, 4, Int64, MM{4, 1, Int64}}, y::VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}})
   @ VectorizationBase ~/.julia/dev/VectorizationBase/src/special/misc.jl:5
 [6] top-level scope
   @ REPL[75]:1

Thanks, fixed that on master. I made the promotion of VecUnroll's rely on the rules for the underlying types, which should make it more robust.

Great, thanks. I still get a few errors from mod tests:
julia> x, y = m1, m2
(4 x Vec{4, Int64}
Vec{4,Int64}<7, 8, 9, 10>
Vec{4,Int64}<1, 2, 3, 4>
Vec{4,Int64}<13, 14, 15, 16>
Vec{4,Int64}<32, 33, 34, 35>, 4 x Vec{4, Int64}
Vec{4,Int64}<3, 5, 7, 9>
Vec{4,Int64}<8, 10, 12, 14>
Vec{4,Int64}<39, 41, 43, 45>
Vec{4,Int64}<17, 19, 21, 23>)

julia> IfElse.ifelse(y == -1, zero(x), x - fld(x, y) * y)
ERROR: TypeError: non-boolean (VectorizationBase.VecUnroll{3, 4, VectorizationBase.Bit, Mask{4, UInt8}}) used in boolean context
Stacktrace:
 [1] ifelse(::VectorizationBase.VecUnroll{3, 4, VectorizationBase.Bit, Mask{4, UInt8}}, ::VectorizationBase.VecUnroll{3, 4, Int64, Vec{4, Int64}}, ::VectorizationBase.VecUnroll{3, 4, Int32, Vec{4, Int32}})
   @ IfElse ~/.julia/packages/IfElse/u1l5W/src/IfElse.jl:3
 [2] top-level scope
   @ REPL[65]:1

Fixed and tested on master.
Note that x - fld(x, y) * y seems to be promoting (demoting?) the element type to Int32. Some operations try to do that on some arches, because Int64 is a low slower/doesn't SIMD for some operations/arch combinations.
That could honestly be done a lot better than it is at the moment.
But something to be aware of.

Although, even on AVX512 div doesn't actually SIMD for Int32 or Int64.

Perhaps we should replace the implementation with Integer -> Float -> Integer for the sake of SIMD?
julia> mydiv(a,b) = trunc(Int, float(a) / float(b))
mydiv (generic function with 1 method)

julia> mydiv(vi1,vi2)
3 x Vec{8, Int64}
Vec{8,Int64}<0, 0, -1, 0, -5, 0, -15, 0>
Vec{8,Int64}<0, -3, 1, -1, 0, 0, 2, 0>
Vec{8,Int64}<1, 8, -4, 6, 1, 0, 0, 0>

julia> vi1 ÷ vi2
3 x Vec{8, Int64}
Vec{8,Int64}<0, 0, -1, 0, -5, 0, -15, 0>
Vec{8,Int64}<0, -3, 1, -1, 0, 0, 2, 0>
Vec{8,Int64}<1, 8, -4, 6, 1, 0, 0, 0>

julia> @benchmark mydiv($(Ref(vi1))[], $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     13.583 ns (0.00% GC)
  median time:      14.864 ns (0.00% GC)
  mean time:        14.635 ns (0.00% GC)
  maximum time:     27.249 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     998

julia> @benchmark ($(Ref(vi1))[] ÷ $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     185.452 ns (0.00% GC)
  median time:      185.821 ns (0.00% GC)
  mean time:        186.234 ns (0.00% GC)
  maximum time:     216.690 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     671

Note that Int64 <--> Float64 is slow on AVX2, but Int32 <--> Float64 is fast, if that has any baring on your code/implementations.

Computer with AVX2 but no AVX512:
julia> @benchmark mydiv($(Ref(vi1))[], $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     66.249 ns (0.00% GC)
  median time:      66.337 ns (0.00% GC)
  mean time:        66.851 ns (0.00% GC)
  maximum time:     109.525 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     978

julia> @benchmark ($(Ref(vi1))[] ÷ $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     193.593 ns (0.00% GC)
  median time:      194.165 ns (0.00% GC)
  mean time:        196.425 ns (0.00% GC)
  maximum time:     684.750 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     631

The new assembly for mydiv is:
	.text
	mov	rax, rdi
	vmovapd	xmm0, xmmword ptr [rsi]
	vmovdqa	xmm1, xmmword ptr [rsi + 16]
	vpextrq	rcx, xmm1, 1
	vcvtsi2sd	xmm2, xmm2, rcx
	vmovdqa	xmm3, xmmword ptr [rsi + 32]
	vmovq	rcx, xmm1
	vcvtsi2sd	xmm1, xmm4, rcx
	vpextrq	rcx, xmm0, 1
	vcvtsi2sd	xmm4, xmm4, rcx
	vmovdqa	xmm6, xmmword ptr [rsi + 48]
	vmovq	rcx, xmm0
	vcvtsi2sd	xmm0, xmm5, rcx
	vpextrq	rcx, xmm3, 1
	vcvtsi2sd	xmm7, xmm5, rcx
	vunpcklpd	xmm1, xmm1, xmm2        # xmm1 = xmm1[0],xmm2[0]
	vmovq	rcx, xmm3
	vcvtsi2sd	xmm2, xmm5, rcx
	vpextrq	rcx, xmm6, 1
	vcvtsi2sd	xmm3, xmm5, rcx
	vunpcklpd	xmm5, xmm0, xmm4        # xmm5 = xmm0[0],xmm4[0]
	vmovq	rcx, xmm6
	vcvtsi2sd	xmm0, xmm8, rcx
	vunpcklpd	xmm11, xmm2, xmm7       # xmm11 = xmm2[0],xmm7[0]
	vmovdqa	xmm4, xmmword ptr [rsi + 64]
	vpextrq	rcx, xmm4, 1
	vunpcklpd	xmm10, xmm0, xmm3       # xmm10 = xmm0[0],xmm3[0]
	vcvtsi2sd	xmm0, xmm8, rcx
	vmovq	rcx, xmm4
	vcvtsi2sd	xmm3, xmm8, rcx
	vunpcklpd	xmm8, xmm3, xmm0        # xmm8 = xmm3[0],xmm0[0]
	vmovdqa	xmm3, xmmword ptr [rsi + 80]
	vpextrq	rcx, xmm3, 1
	vcvtsi2sd	xmm4, xmm9, rcx
	vmovq	rcx, xmm3
	vcvtsi2sd	xmm3, xmm9, rcx
	vunpcklpd	xmm9, xmm3, xmm4        # xmm9 = xmm3[0],xmm4[0]
	vmovdqa	xmm3, xmmword ptr [rdx]
	vmovdqa	xmm4, xmmword ptr [rdx + 16]
	vmovapd	xmm0, xmmword ptr [rdx + 32]
	vmovdqa	xmm6, xmmword ptr [rdx + 48]
	vpextrq	rcx, xmm4, 1
	vcvtsi2sd	xmm2, xmm12, rcx
	vmovq	rcx, xmm4
	vcvtsi2sd	xmm4, xmm12, rcx
	vunpcklpd	xmm2, xmm4, xmm2        # xmm2 = xmm4[0],xmm2[0]
	vpextrq	rcx, xmm3, 1
	vcvtsi2sd	xmm7, xmm12, rcx
	vdivpd	xmm4, xmm1, xmm2
	vmovq	rcx, xmm3
	vcvtsi2sd	xmm1, xmm12, rcx
	vpextrq	rcx, xmm0, 1
	vcvtsi2sd	xmm2, xmm12, rcx
	vunpcklpd	xmm1, xmm1, xmm7        # xmm1 = xmm1[0],xmm7[0]
	vmovq	rcx, xmm0
	vcvtsi2sd	xmm0, xmm12, rcx
	vdivpd	xmm1, xmm5, xmm1
	vunpcklpd	xmm0, xmm0, xmm2        # xmm0 = xmm0[0],xmm2[0]
	vpextrq	rcx, xmm6, 1
	vdivpd	xmm3, xmm11, xmm0
	vcvtsi2sd	xmm0, xmm12, rcx
	vmovq	rcx, xmm6
	vcvtsi2sd	xmm2, xmm12, rcx
	vunpcklpd	xmm0, xmm2, xmm0        # xmm0 = xmm2[0],xmm0[0]
	vmovdqa	xmm2, xmmword ptr [rdx + 64]
	vpextrq	rcx, xmm2, 1
	vcvtsi2sd	xmm5, xmm12, rcx
	vdivpd	xmm6, xmm10, xmm0
	vmovq	rcx, xmm2
	vcvtsi2sd	xmm0, xmm12, rcx
	vunpcklpd	xmm0, xmm0, xmm5        # xmm0 = xmm0[0],xmm5[0]
	vmovdqa	xmm2, xmmword ptr [rdx + 80]
	vpextrq	rcx, xmm2, 1
	vdivpd	xmm0, xmm8, xmm0
	vcvtsi2sd	xmm5, xmm12, rcx
	vmovq	rcx, xmm2
	vcvtsi2sd	xmm2, xmm12, rcx
	vunpcklpd	xmm2, xmm2, xmm5        # xmm2 = xmm2[0],xmm5[0]
	vdivpd	xmm2, xmm9, xmm2
	vcvttsd2si	rcx, xmm1
	vmovq	xmm5, rcx
	vpermilpd	xmm1, xmm1, 1           # xmm1 = xmm1[1,0]
	vcvttsd2si	rcx, xmm1
	vmovq	xmm1, rcx
	vpunpcklqdq	xmm1, xmm5, xmm1        # xmm1 = xmm5[0],xmm1[0]
	vcvttsd2si	rcx, xmm4
	vmovq	xmm5, rcx
	vpermilpd	xmm4, xmm4, 1           # xmm4 = xmm4[1,0]
	vcvttsd2si	rcx, xmm4
	vmovq	xmm4, rcx
	vpunpcklqdq	xmm4, xmm5, xmm4        # xmm4 = xmm5[0],xmm4[0]
	vcvttsd2si	rcx, xmm6
	vmovq	xmm5, rcx
	vpermilpd	xmm6, xmm6, 1           # xmm6 = xmm6[1,0]
	vcvttsd2si	rcx, xmm6
	vmovq	xmm6, rcx
	vpunpcklqdq	xmm5, xmm5, xmm6        # xmm5 = xmm5[0],xmm6[0]
	vcvttsd2si	rcx, xmm3
	vmovq	xmm6, rcx
	vpermilpd	xmm3, xmm3, 1           # xmm3 = xmm3[1,0]
	vcvttsd2si	rcx, xmm3
	vmovq	xmm3, rcx
	vpunpcklqdq	xmm3, xmm6, xmm3        # xmm3 = xmm6[0],xmm3[0]
	vcvttsd2si	rcx, xmm2
	vmovq	xmm6, rcx
	vpermilpd	xmm2, xmm2, 1           # xmm2 = xmm2[1,0]
	vcvttsd2si	rcx, xmm2
	vmovq	xmm2, rcx
	vpunpcklqdq	xmm2, xmm6, xmm2        # xmm2 = xmm6[0],xmm2[0]
	vcvttsd2si	rcx, xmm0
	vmovq	xmm6, rcx
	vpermilpd	xmm0, xmm0, 1           # xmm0 = xmm0[1,0]
	vcvttsd2si	rcx, xmm0
	vmovq	xmm0, rcx
	vpunpcklqdq	xmm0, xmm6, xmm0        # xmm0 = xmm6[0],xmm0[0]
	vmovdqa	xmmword ptr [rdi + 16], xmm4
	vmovdqa	xmmword ptr [rdi], xmm1
	vmovdqa	xmmword ptr [rdi + 32], xmm3
	vmovdqa	xmmword ptr [rdi + 48], xmm5
	vmovdqa	xmmword ptr [rdi + 64], xmm0
	vmovdqa	xmmword ptr [rdi + 80], xmm2
	ret
	nop	word ptr cs:[rax + rax]

But if we use Int32 instead...
julia> using VectorizationBase, BenchmarkTools; using VectorizationBase: AbstractSIMD

julia> mydiv(a::AbstractSIMD{W,I}, b::AbstractSIMD{W,I}) where {W,I<:Integer} = trunc(Int32, float(a) / float(b))
mydiv (generic function with 2 methods)

julia> vi1 = VectorizationBase.VecUnroll((
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...)
       ));

julia> vi2 = VectorizationBase.VecUnroll((
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...)
       ));

julia> mydiv(vi1,vi2)
3 x Vec{4, Int32}
Vec{4,Int32}<0, -14, 0, 0>
Vec{4,Int32}<0, 0, -1, -1>
Vec{4,Int32}<3, 0, -3, 0>

julia> vi1 ÷ vi2
3 x Vec{4, Int32}
Vec{4,Int32}<0, -14, 0, 0>
Vec{4,Int32}<0, 0, -1, -1>
Vec{4,Int32}<3, 0, -3, 0>

julia> @benchmark mydiv($(Ref(vi1))[], $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     49.587 ns (0.00% GC)
  median time:      49.595 ns (0.00% GC)
  mean time:        50.290 ns (0.00% GC)
  maximum time:     98.261 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     987

julia> @benchmark ($(Ref(vi1))[] ÷ $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     69.621 ns (0.00% GC)
  median time:      69.638 ns (0.00% GC)
  mean time:        71.028 ns (0.00% GC)
  maximum time:     133.334 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     975

And we have the clean SIMD asm:
	.text
	vcvtdq2pd	ymm0, xmmword ptr [rsi]
	vcvtdq2pd	ymm1, xmmword ptr [rsi + 16]
	vcvtdq2pd	ymm2, xmmword ptr [rsi + 32]
	vcvtdq2pd	ymm3, xmmword ptr [rdx]
	vdivpd	ymm0, ymm0, ymm3
	vcvtdq2pd	ymm3, xmmword ptr [rdx + 16]
	vdivpd	ymm1, ymm1, ymm3
	vcvtdq2pd	ymm3, xmmword ptr [rdx + 32]
	mov	rax, rdi
	vdivpd	ymm2, ymm2, ymm3
	vcvttpd2dq	xmm0, ymm0
	vcvttpd2dq	xmm1, ymm1
	vcvttpd2dq	xmm2, ymm2
	vmovapd	xmmword ptr [rdi], xmm0
	vmovapd	xmmword ptr [rdi + 16], xmm1
	vmovapd	xmmword ptr [rdi + 32], xmm2
	vzeroupper
	ret
	nop	dword ptr [rax]

If you're willing to limit the effective range to +/- 2^31 on non-AVX512DQ platforms and +/- 2^53 given AVX512DQ (Float64 will exactly represent up to 2^53), then you can get a substantial performance boost on the integer div operations.

@mcabbott  All tests pass.

Awesome, thanks!

Great, all pass locally too, even the ones I had commented out.
I'm surprised by these div results, my laptop gives:
julia> mydiv(vi1,vi2)
3 x Vec{4, Int64}
Vec{4,Int64}<1, -1, 1, 6>
Vec{4,Int64}<1, 3, -8, -1>
Vec{4,Int64}<0, 0, 0, 0>

julia> vi1 ÷ vi2
3 x Vec{4, Int64}
Vec{4,Int64}<1, -1, 1, 6>
Vec{4,Int64}<1, 3, -8, -1>
Vec{4,Int64}<0, 0, 0, 0>

julia> @benchmark mydiv($(Ref(vi1))[], $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     21.866 ns (0.00% GC)
  median time:      22.157 ns (0.00% GC)
  mean time:        22.309 ns (0.00% GC)
  maximum time:     144.809 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     997

julia> @benchmark ($(Ref(vi1))[] ÷ $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     94.274 ns (0.00% GC)
  median time:      94.572 ns (0.00% GC)
  mean time:        97.789 ns (0.00% GC)
  maximum time:     826.215 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     951

julia> versioninfo()
Julia Version 1.7.0-DEV.149
Commit<PHONE_NUMBER>* (2020-12-22 01:27 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.7.0)
  CPU: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.0 (ORCJIT, skylake)

and for scalars
julia> @btime trunc(Int, a[] / b[])  setup=(a=Ref(rand(Int)); b=Ref(rand(Int)););
5.592 ns (0 allocations: 0 bytes)

julia> @btime div(a[], b[])  setup=(a=Ref(rand(Int)); b=Ref(rand(Int)););
9.473 ns (0 allocations: 0 bytes)

It seems that for many uses of div, 2^53 is more than enough, and this should be used widely. For instance every linear to CartesianIndex calculation involves mod and unless you're indexing from typemin or something crazy, or live far in the future, can't have numbers this big.

If you're willing to limit the effective range to +/- 2^31 on non-AVX512DQ platforms and +/- 2^53 given AVX512DQ (Float64 will exactly represent up to 2^53), then you can get a substantial performance boost on the integer div operations.

Wait how do you get 2^31 here?
julia> eps(0.0 + 2^52)
1.0

julia> eps(0f0 + 2^23)
1.0f0

Okay, I'm surprised by the good performance you got with Vecs of Int64. What do you get with the Int32 vecs?

Wait how do you get 2^31 here?

By using Int32 instead of Int64, because SIMD conversion between Int64 and Float64 requires AVX512DQ (i.e., AVX2 cannot do it).

Do you think it'd be worth switching to these by default?

Oh of course, 31 is pretty close to 32 :) but not to Float32.
But curious that my non-AVX512 laptop does well on the Float64 division path then? I guess it is spending most of its time converting -- here is pure Float64 division:
julia> vf1 = VectorizationBase.VecUnroll((
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...)
       ));

julia> vf2 = VectorizationBase.VecUnroll((
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Float64), VectorizationBase.pick_vector_width_val(Float64))...)
       ))
3 x Vec{4, Float64}
Vec{4,Float64}<0.13508764382415084, 0.18823755847820633, 0.29929030095012, 0.43807051017356824>
Vec{4,Float64}<0.6747103894887554, 0.9151196779454043, 0.3903431430572155, 0.330261035139215>
Vec{4,Float64}<0.17875131348038997, 0.43389583433915746, 0.4613364578216672, 0.49480678051459326>

julia> @benchmark $(Ref(vf1))[] / $(Ref(vf2))[]
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     6.704 ns (0.00% GC)
  median time:      6.719 ns (0.00% GC)
  mean time:        6.831 ns (0.00% GC)
  maximum time:     274.079 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     1000

And for Float32, your div tests from above:
julia> mydiv(vi1,vi2)
3 x Vec{4, Int32}
Vec{4,Int32}<0, 0, -2, 1>
Vec{4,Int32}<1, -7, -1, 17>
Vec{4,Int32}<-2, 0, 4, 9>

julia> vi1 ÷ vi2
3 x Vec{4, Int32}
Vec{4,Int32}<0, 0, -2, 1>
Vec{4,Int32}<1, -7, -1, 17>
Vec{4,Int32}<-2, 0, 4, 9>

julia> @benchmark mydiv($(Ref(vi1))[], $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     8.937 ns (0.00% GC)
  median time:      8.955 ns (0.00% GC)
  mean time:        9.028 ns (0.00% GC)
  maximum time:     98.598 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     999

julia> @benchmark ($(Ref(vi1))[] ÷ $(Ref(vi2))[])
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     32.898 ns (0.00% GC)
  median time:      32.903 ns (0.00% GC)
  mean time:        33.148 ns (0.00% GC)
  maximum time:     138.323 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     994

Do you think it'd be worth switching to these by default?
That'd probably count as a breaking change.

I'd worry a bit that there might be e.g. cryptography users who care about large integers & overflow. But it would be nice if there was an easy way to opt in. Here and in Base really... maybe @fastmath div(a,b) should do this?

But curious that my non-AVX512 laptop does well on the Float64 division path then?

Mind sharing your assembly?
I'm guessing it's just much better at out of order stuff than my old laptop, but the assembly will probably look basically the same as what I shared earlier.

And for Float32, your div tests from above:

It should also be Float64 -- it was when I benchmarked it.
Can you call float(vi1)?
On your computer, float(vi1::Vec{4,Int32}) should return  Vec{4,Float64}.
float(v::Vec{8,Int32}), however, should return Vec{8,Float32}.
You can also see from my assembly from the benchmark:
.text
	vcvtdq2pd	ymm0, xmmword ptr [rsi]
	vcvtdq2pd	ymm1, xmmword ptr [rsi + 16]
	vcvtdq2pd	ymm2, xmmword ptr [rsi + 32]
	vcvtdq2pd	ymm3, xmmword ptr [rdx]
	vdivpd	ymm0, ymm0, ymm3
	vcvtdq2pd	ymm3, xmmword ptr [rdx + 16]
	vdivpd	ymm1, ymm1, ymm3
	vcvtdq2pd	ymm3, xmmword ptr [rdx + 32]
	mov	rax, rdi
	vdivpd	ymm2, ymm2, ymm3
	vcvttpd2dq	xmm0, ymm0
	vcvttpd2dq	xmm1, ymm1
	vcvttpd2dq	xmm2, ymm2
	vmovapd	xmmword ptr [rdi], xmm0
	vmovapd	xmmword ptr [rdi + 16], xmm1
	vmovapd	xmmword ptr [rdi + 32], xmm2
	vzeroupper
	ret
	nop	dword ptr [rax]

It loaded memory 16 bytes (128 bits) apart, but placed the results into full 256 bit ymm registers. It also ended with 128 bit xmm registers that it again stored 128 bits apart.
The conversion function vcvtdq2pd converts (vct)  Int32s ("double quads" or dq) into (to=2) packed doubles (pd).
And then same for going the other way, vcvtpd2dq converts packed doubles to double quads.
So that's where the 2^32 came from: truncate Int64 into Int32, and then convert Int32 into Float64.

I'd worry a bit that there might be e.g. cryptography users who care about large integers & overflow. But it would be nice if there was an easy way to opt in. Here and in Base really... maybe @fastmath div(a,b) should do this?

Yeah, I've been thinking I should probably actually use @fastmath. LoopVectorization could also apply it by default, but have a keyword argument not to.
I think @haampie has a fork where he added @fastmath, or maybe he just removed the fast flags that're already there.

I just dropped all flags, didn't add the fastmath bit yet!

Mind sharing your assembly?

With the Int64 vi1, as timed above:
julia> @code_native debuginfo=:none syntax=:intel mydiv(vi1, vi2)
	.section	__TEXT,__text,regular,pure_instructions
	mov	rax, rdi
	vmovapd	xmm0, xmmword ptr [rsi]
	vmovdqa	xmm1, xmmword ptr [rsi + 16]
	vpextrq	rcx, xmm1, 1
	vcvtsi2sd	xmm2, xmm2, rcx
	vmovdqa	xmm3, xmmword ptr [rsi + 32]
	vmovq	rcx, xmm1
	vcvtsi2sd	xmm1, xmm4, rcx
	vpextrq	rcx, xmm0, 1
	vmovdqa	xmm6, xmmword ptr [rsi + 48]
	vcvtsi2sd	xmm4, xmm4, rcx
	vmovq	rcx, xmm0
	vcvtsi2sd	xmm0, xmm5, rcx
	vunpcklpd	xmm7, xmm1, xmm2        ## xmm7 = xmm1[0],xmm2[0]
	vunpcklpd	xmm5, xmm0, xmm4        ## xmm5 = xmm0[0],xmm4[0]
	vpextrq	rcx, xmm3, 1
	vcvtsi2sd	xmm0, xmm8, rcx
	vmovq	rcx, xmm3
	vcvtsi2sd	xmm1, xmm8, rcx
	vunpcklpd	xmm4, xmm1, xmm0        ## xmm4 = xmm1[0],xmm0[0]
	vpextrq	rcx, xmm6, 1
	vcvtsi2sd	xmm0, xmm8, rcx
	vmovq	rcx, xmm6
	vcvtsi2sd	xmm1, xmm8, rcx
	vunpcklpd	xmm9, xmm1, xmm0        ## xmm9 = xmm1[0],xmm0[0]
	vmovdqa	xmm0, xmmword ptr [rsi + 64]
	vpextrq	rcx, xmm0, 1
	vcvtsi2sd	xmm2, xmm8, rcx
	vmovq	rcx, xmm0
	vcvtsi2sd	xmm0, xmm8, rcx
	vunpcklpd	xmm8, xmm0, xmm2        ## xmm8 = xmm0[0],xmm2[0]
	vmovdqa	xmm2, xmmword ptr [rsi + 80]
	vpextrq	rcx, xmm2, 1
	vcvtsi2sd	xmm3, xmm10, rcx
	vmovq	rcx, xmm2
	vcvtsi2sd	xmm2, xmm10, rcx
	vunpcklpd	xmm10, xmm2, xmm3       ## xmm10 = xmm2[0],xmm3[0]
	vmovdqa	xmm6, xmmword ptr [rdx]
	vmovdqa	xmm3, xmmword ptr [rdx + 16]
	vmovapd	xmm0, xmmword ptr [rdx + 32]
	vmovdqa	xmm1, xmmword ptr [rdx + 48]
	vpextrq	rcx, xmm3, 1
	vcvtsi2sd	xmm2, xmm11, rcx
	vmovq	rcx, xmm3
	vcvtsi2sd	xmm3, xmm11, rcx
	vunpcklpd	xmm2, xmm3, xmm2        ## xmm2 = xmm3[0],xmm2[0]
	vdivpd	xmm3, xmm7, xmm2
	vpextrq	rcx, xmm6, 1
	vcvtsi2sd	xmm2, xmm11, rcx
	vmovq	rcx, xmm6
	vcvtsi2sd	xmm6, xmm11, rcx
	vunpcklpd	xmm2, xmm6, xmm2        ## xmm2 = xmm6[0],xmm2[0]
	vdivpd	xmm2, xmm5, xmm2
	vpextrq	rcx, xmm0, 1
	vcvtsi2sd	xmm5, xmm11, rcx
	vmovq	rcx, xmm0
	vcvtsi2sd	xmm0, xmm11, rcx
	vunpcklpd	xmm0, xmm0, xmm5        ## xmm0 = xmm0[0],xmm5[0]
	vdivpd	xmm4, xmm4, xmm0
	vpextrq	rcx, xmm1, 1
	vcvtsi2sd	xmm0, xmm11, rcx
	vmovq	rcx, xmm1
	vcvtsi2sd	xmm1, xmm11, rcx
	vunpcklpd	xmm0, xmm1, xmm0        ## xmm0 = xmm1[0],xmm0[0]
	vmovdqa	xmm1, xmmword ptr [rdx + 64]
	vpextrq	rcx, xmm1, 1
	vdivpd	xmm5, xmm9, xmm0
	vcvtsi2sd	xmm0, xmm11, rcx
	vmovq	rcx, xmm1
	vcvtsi2sd	xmm1, xmm11, rcx
	vunpcklpd	xmm0, xmm1, xmm0        ## xmm0 = xmm1[0],xmm0[0]
	vmovdqa	xmm1, xmmword ptr [rdx + 80]
	vpextrq	rcx, xmm1, 1
	vcvtsi2sd	xmm6, xmm11, rcx
	vdivpd	xmm0, xmm8, xmm0
	vmovq	rcx, xmm1
	vcvtsi2sd	xmm1, xmm11, rcx
	vunpcklpd	xmm1, xmm1, xmm6        ## xmm1 = xmm1[0],xmm6[0]
	vdivpd	xmm1, xmm10, xmm1
	vcvttsd2si	rcx, xmm2
	vmovq	xmm6, rcx
	vpermilpd	xmm2, xmm2, 1           ## xmm2 = xmm2[1,0]
	vcvttsd2si	rcx, xmm2
	vmovq	xmm2, rcx
	vpunpcklqdq	xmm2, xmm6, xmm2        ## xmm2 = xmm6[0],xmm2[0]
	vcvttsd2si	rcx, xmm3
	vmovq	xmm6, rcx
	vpermilpd	xmm3, xmm3, 1           ## xmm3 = xmm3[1,0]
	vcvttsd2si	rcx, xmm3
	vmovq	xmm3, rcx
	vpunpcklqdq	xmm3, xmm6, xmm3        ## xmm3 = xmm6[0],xmm3[0]
	vcvttsd2si	rcx, xmm5
	vmovq	xmm6, rcx
	vpermilpd	xmm5, xmm5, 1           ## xmm5 = xmm5[1,0]
	vcvttsd2si	rcx, xmm5
	vmovq	xmm5, rcx
	vpunpcklqdq	xmm5, xmm6, xmm5        ## xmm5 = xmm6[0],xmm5[0]
	vcvttsd2si	rcx, xmm4
	vmovq	xmm6, rcx
	vpermilpd	xmm4, xmm4, 1           ## xmm4 = xmm4[1,0]
	vcvttsd2si	rcx, xmm4
	vmovq	xmm4, rcx
	vpunpcklqdq	xmm4, xmm6, xmm4        ## xmm4 = xmm6[0],xmm4[0]
	vcvttsd2si	rcx, xmm1
	vmovq	xmm6, rcx
	vpermilpd	xmm1, xmm1, 1           ## xmm1 = xmm1[1,0]
	vcvttsd2si	rcx, xmm1
	vmovq	xmm1, rcx
	vpunpcklqdq	xmm1, xmm6, xmm1        ## xmm1 = xmm6[0],xmm1[0]
	vcvttsd2si	rcx, xmm0
	vmovq	xmm6, rcx
	vpermilpd	xmm0, xmm0, 1           ## xmm0 = xmm0[1,0]
	vcvttsd2si	rcx, xmm0
	vmovq	xmm0, rcx
	vpunpcklqdq	xmm0, xmm6, xmm0        ## xmm0 = xmm6[0],xmm0[0]
	vmovdqa	xmmword ptr [rdi + 16], xmm3
	vmovdqa	xmmword ptr [rdi], xmm2
	vmovdqa	xmmword ptr [rdi + 32], xmm4
	vmovdqa	xmmword ptr [rdi + 48], xmm5
	vmovdqa	xmmword ptr [rdi + 64], xmm0
	vmovdqa	xmmword ptr [rdi + 80], xmm1
	ret
	nop	word ptr cs:[rax + rax]

julia> vi1
3 x Vec{4, Int64}

And for Float32, your div tests from above:
It should also be Float64 -- it was when I benchmarked it.
Can you call float(vi1)?

Sorry this was a typo on my part. Int32, which float maps to Float64:
julia> vi1 = VectorizationBase.VecUnroll((
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...),
           Vec(ntuple(_ -> rand(Int32), VectorizationBase.pick_vector_width_val(Float64))...)
       ));

julia> float(vi1)
3 x Vec{4, Float64}
Vec{4,Float64}<1.26866162e8, 2.047682163e9, -7.49188072e8, 2.7746487e7>
Vec{4,Float64}<9.40454266e8, -1.082813363e9, -6.84906416e8, -2.82213622e8>
Vec{4,Float64}<4.18512731e8, 9.903253e6, -4.7204438e7, -1.216191205e9>


Dark theme via DarkReader

Issue

Closes https://github.com/hugo-toha/toha/issues/59
Description

Use DarkReader as a darkmode provider.
I've added the option to use other theme color providers and hopefully toha's own dark theme in the future. This possible with the darkTheme.provider property. Below is an example on how to set-up the dark theme. I'm also planning to add this information to the toha documentation.
# Dark theme toggle
darkTheme:
  provider: darkreader
  enable: true
  default: dark

The drawback of this is that it is a lot slower than having your own dark theme because the theme is dynamically generated.
Test Evidence

It's already live in my website https://donfiguerres.com/

Hi @donfiguerres, Thank you for the amazing work. I have added few comments. Can you please acknowledge them. Otherwise, looks good to me.

Thanks for the feedback! I agree with your inputs. I'll work on these and push the changes to my branch.

Done with the changes and already live on my website at https://donfiguerres.com/ if you need to see how it looks.
I also did a quick test with the multilingual mode to make sure it doesn't conflict with the language dropdown menu.

Hi @donfiguerres, thanks again for the hard work. Looks good to me. I will test and merge soon.


Sudden memory increase in ETCD members

We got into sudden memory increase on ETCD members in k8s cluster, and the ETCD pods got OOM killed.
I did some investigation on the members, and found that the member's DISK(Network Volume provided by SolidFire) was a little slow, and the Memory of the member kept increasing until OOM killed.
Then I switch the volume from network volume to local disk, and the OOM things gone.
Is it expected?

The ETCD server is on v3.0.15

Can you please provide etcd server log starting at 19:30 to 23:00 for all your members in the cluster?

The log is UTC time. The screenshot is Beijing time.
etcd.log.2<IP_ADDRESS>.tar.gz

@xiang90 I think this can be the root solution: https://github.com/coreos/etcd/issues/7981#issuecomment-303795997

There are quite a few lines on the graph. What are they?
And I can see interleave logs. Were there two etcd concurrently writing into the same log file? It is very hard to understand what was going on from the log.
But, yea, there are tons of warnings in your log. You need to make sure the warning rate is 0 most of the time. Or your etcd cluster will never be happy.

Were there two etcd concurrently writing into the same log file?

No. There's only one etcd running in the Node, and the etcd container is started by kubelet.

there are tons of warnings in your log

The warnings are caused by disk sync I guess. And we have the local SSD and give ETCD enough resources.
Do you have some recommendations to reduce the warnings or ease it out?

@xiang90 I use local SSD and start a whole new ETCD cluster  without any load , there're still bunch of warnings about applying entries.
/var/log # etcdctl --endpoints [$(echo $member_urls | sed -e "s/ /,/g")] --cacert=/etc/ssl/kubernetes/ca.crt endpoint status -w table;
+----------------------------------------------+------------------+---------+---------+-----------+-----------+------------+
|                   ENDPOINT                   |        ID        | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+----------------------------------------------+------------------+---------+---------+-----------+-----------+------------+
| https://tess-node-xq2sm-5915.51.tess.io:4001 | 5902a07919e43cdf | 3.0.15  | 25 kB   | true      |         4 |     108016 |
| https://tess-node-2o9hu-4886.51.tess.io:4001 | b620b4c395187fad | 3.0.15  | 25 kB   | false     |         4 |     108016 |
| https://tess-node-873t0-8911.51.tess.io:4001 | c2cb0e006c421dd3 | 3.0.15  | 25 kB   | false     |         4 |     108016 |
| https://tess-node-vh8tr-6888.51.tess.io:4001 | d49c2ef31cf07365 | 3.0.15  | 25 kB   | false     |         4 |     108016 |
| https://tess-node-ba93c-3871.51.tess.io:4001 | df3a73af6b1c2179 | 3.0.15  | 25 kB   | false     |         4 |     108017 |
+----------------------------------------------+------------------+---------+---------+-----------+-----------+------------+
/var/log # tail etcd.log
2017-05-26 04:48:07.465530 W | etcdserver: apply entries took too long [70.226991ms for 1 entries]
2017-05-26 04:48:07.465587 W | etcdserver: avoid queries with large range/delete range!
2017-05-26 04:51:10.465522 W | etcdserver: apply entries took too long [69.872088ms for 1 entries]
2017-05-26 04:51:10.465573 W | etcdserver: avoid queries with large range/delete range!
2017-05-26 04:51:11.465581 W | etcdserver: apply entries took too long [70.156267ms for 1 entries]
2017-05-26 04:51:11.465624 W | etcdserver: avoid queries with large range/delete range!
2017-05-26 05:01:11.965522 W | etcdserver: apply entries took too long [70.038266ms for 1 entries]
2017-05-26 05:01:11.965589 W | etcdserver: avoid queries with large range/delete range!
2017-05-26 05:02:46.965542 W | etcdserver: apply entries took too long [28.357591ms for 1 entries]
2017-05-26 05:02:46.965601 W | etcdserver: avoid queries with large range/delete range!
/var/log #

108016

why raft index is so high?
does any other application share the same SSD? if yes, move them away. or there is an issue with your SSD. probably ask your hardware guys to get it fixed.

does any other application share the same SSD?

No. There're only another 2 applications running on the same node. One is prometheus which is using network volume. The other one is grafana dashboard which is not using any disk IO.

@armstrongli
Try to kill your another two applications. If the problem still exists, then you probably need to ask your hardware guy about what is going on. if etcd under no loads, apply should always be one or zero simple disk hit.

I'll check the hardware level things about the performance issue.

Hi
We have a similar problem with version 3.1.3.

It is always the leader that consumes the memory.
We have 3 Nodes with around 1200 clients connected.

@zbindenren I believe your issues should be fixed if you upgrade to 3.1.5+. There is a bug in the etcd release > 3.1 but < 3.1.5.
@armstrongli
I am going to close this issue since it is inactive and we do not have enough information to help you.

@xiang90 Thanks. And I'll upgrade our cluster to v3.1.9 .

Problem is fixed with 3.1.9


Fake sandbox as a controller

Fake the sandbox as a controller, mock the packaging service

Coverage decreased (-3.02%) to 72.438% when pulling a5d6b3fe78c86671780f3256972cca2fc9c64071 on sandbox-experiment into a28a0c5495989990ab912533f3caa97560bcf778 on master.


feat(@angular-devkit/build-angular): make the "loader" option available in browser-esbuild builder

PR Checklist
Please check to confirm your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/angular/angular-cli/blob/main/CONTRIBUTING.md#-commit-message-guidelines
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?
browser-esbuild builder uses buildApplicationInternal, that supports the loader option. However, it's not exposed for this builder

Issue Number: N/A
What is the new behavior?
Exposed the supported option

Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information

Thanks for your contribution.
The browser-esbuild is a compatibility builder that has the same exact options of the webpack based browser builder with the aim to allow users switching back and forth.
In the case you’d want to use the new options and features please use the application builder.

@alan-agius4 but it's literally there, why wouldn't you allow using it?

@alan-agius4 but it's literally there, why wouldn't you allow using it?

So is the application builder. By design the esbuild and webpack based browser builders have the same options, to allow users to switch back and forth from esbuild to webpack, adding extra options to one of the builders would break this design. In the case you want to stick with esbuild and use its features using the application builder is the way forward.


Field with alias leads to ValidationError in v2.2.0

from pydantic import BaseModel, Field
from pydantic_settings import BaseSettings

class Item(BaseModel):
    item_type: str = Field(alias="itemType")

class ExampleConfig(BaseSettings):
    item: Item

if __name__ == "__main__":
    ExampleConfig(item=Item(itemType="EXAMPLE"))

results in
1 validation error for ExampleConfig
item.itemType
  Field required [type=missing, input_value={'item_type': 'EXAMPLE'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.6/v/missing
  File "/tmp/foo/pydantic_settings_issue.py", line 22, in <module>
    ExampleConfig(item=Item(itemType="EXAMPLE"))
pydantic_core._pydantic_core.ValidationError: 1 validation error for ExampleConfig
item.itemType
  Field required [type=missing, input_value={'item_type': 'EXAMPLE'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.6/v/missing

however just using it without the Field works:
class Item(BaseModel):
    item_type: str

This bug was introduced with v2.2.0, v2.1.0 works.

Thanks @g3n35i5 for reporting this issue.
Agree, it is a bug and has been introduced in https://github.com/pydantic/pydantic-settings/commit/2784a7013d0bccb5c76c2db78befe0c266baac55
I will create a fix for this bug soon

@g3n35i5 Just created the PR
https://github.com/pydantic/pydantic-settings/pull/240
It would be great if you can test and confirm the fix.
Thanks

@hramezani I can confirm that your bugfix works :blush: Thank you very much!

pydantic-settings 2.2.1 has been released


What is the structure of encoder in diffusionAE?

when inject the melspectrogram latent inside injection items in the depeth(4 in  mousai paper), the dim doesnt match
mel latent (32, 512)  and waveform hiddenstate (1, 2 ** 18 // 4 16384), the concat failed in dim of length


Fabric Port

Hey, is there in planning any sort of port for the mod via the Architectury API?

Sorry, there is no planning of any sort for a Fabric Port right now. I never used Architectury or coded for Fabric, and even coding for Forge is something new to me, those few small mods were my firsts, so doing the same thing for both mod-loaders was never on my radar. I mostly wrote those for personal use and for a modpack I'm working on anyway. So, extending that work to cover a whole extra thing would be a lot of work and management headaches/maintenance that I would rather avoid, as I don't want to overwhelm myself.
I won't say never, as things tend to change and supporting both loaders would be cool, but right now that would be a no.

Alright, it's cool, good learning then.


cdc: split spans based on capture number

What problem does this PR solve?

Issue Number: close #8355
Also, close #8247
What is changed and how it works?
Split spans based on capture number.
Check List
Tests

Unit test

Questions
Will it cause performance regression or break compatibility?
No.
Do you need to update user documentation, design documentation or monitoring documentation?
Yes.
Release note
Split a table into multiple spans and evenly distribute them to TiCDC nodes

/merge

/run-all-tests

/merge

/merge

/merge

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests


README: Update support policy

Description

States an end date for v6 support
Adds v8
Cleans up prerequisite notices

How Has This Been Tested?

Type of Changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation (fix or improvement to the website or code docs)

BEFORE

AFTER

Checklist

[X] The PR is submitted to the correct branch (dev).
[X] My code follows the code style of this project.
[ ] I've added relevant tests.

Thanks Daniel


SonarQube is an approver of pull-requests.

Linked to issue #11.
SonarQube user approves the pull-request if there is no new issue raised by the submitted pull-request.

@nvillard, your PR comments have been integrated!

Fix issue which overwrites reviewer list when we initialize SQ reviewer.

Fine with me.
I will open an issue to improve the user handling.
Objective of this issue will be to ensure, in a safe way, an user cannot be present twice.


homebridge error with 403: Forbidden

Apr 30 00:27:27 [24816]: undefined:1
Apr 30 00:27:27 24816]: 403: Forbidden
Apr 30 00:27:27 [24816]: ^
Apr 30 00:27:27 [24816]: SyntaxError: Unexpected token : in JSON at position 3

This is an issue with your plugin, which plugin is it?  You may want to open an issue against the plugin.

On Apr 29, 2017, at 12:29 PM, Leon Lee<EMAIL_ADDRESS>wrote:
Apr 30 00:27:27 [24816]: undefined:1
Apr 30 00:27:27 24816]: 403: Forbidden
Apr 30 00:27:27 [24816]: ^
Apr 30 00:27:27 [24816]: SyntaxError: Unexpected token : in JSON at position 3
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

homebridge-homeassistant

Looks like a config error with the plugin, please open an issue with the home-assistant plugin.

On Apr 29, 2017, at 8:24 PM, Leon Lee<EMAIL_ADDRESS>wrote:
homebridge-homeassistant
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

thanks


Increase number of task slots to 8

Price Wars currently requires 4 slots to run its 4 jobs. Dual core machines will only provide two slots though. This results in a failure to generate the profit and revenue statistics. This PR therefore updates the number of slots to 8, regardless of the CPU count. I've opted for 8 to be a bit more future-proof.
I've seen the other PRs which switch to the official Docker images.
I wanted to create this PR just for reference. This is probably something you should look into with the official images as well.
//cc @KBorchar @frederike-ramin

Thanks for the pull request. I'll also address this in my open PR #11


Update REST API to work with new BagIt workflow

@selimnairb - is this still an issue?

@mjstealey No, this issue is no longer valid.  Closing.


about other hyperparameters on the LaSOT，UAV123,NFS30 datasets

could u provide the hyperparameters on the other datasets besides the VOT and OTB? i want to take the siamban as baseline.

Did you get hyperparameters？ Can you share with me？


Add trained Chatbot in our web site

This issue focuses on integrating a trained chatbot to assist new users who are unfamiliar with the application's functionalities. The chatbot will provide guidance on navigating the app, understanding features, and answering frequently asked questions. This addition will improve user experience by offering quick and accessible support within the application.
I trained this chatbot according to our Web site.
Please assign me with proper labels then i will start my work on it.
Thanks @Yash-Ainapure

Heyy @skanarul8002 ,
Currently we don't require any chatbots here as it will also make the website heavy by adding unnecessary stuff
and get assigned first before starting to work on it.
thanks


Add introduction to second slide

created a a new slide, allowing user to go back using left arrow key

Here we go!


Add PickProperties type and @withPickedProperties decorator

Add PickProperties based on OmitProperties
Based on https://github.com/microsoft/typespec/discussions/3484#discussioncomment-9610555 you may not be wanting more mutating decorators, but PR is here if it's ok.

/azp run typespec - pr tools

:x: There is undocummented changes. Run chronus add to add a changeset or click here.
The following packages have changes but are not documented.

:x:@typespec/compiler

Show changes

/azp run typespec - pr tools

You can try these changes at https://cadlplayground.z22.web.core.windows.net/prs/3488/
Check the website changes at https://tspwebsitepr.z22.web.core.windows.net/prs/3488/

/azp run typespec - pr tools


Feedback Delay

When triggering a cue from a "mitti: Play cue with number / ID", the feedback on the button pressed "mitti: Cue ID - Playing" will show the last file played as playing before showing the current file, defeating the purpose/accuracy of the feedback in the first place.
Example: I hit button that triggers Play Cue ID Number 1, panic, and then Play Cue ID Number 2, the feedback will show that Cue 1 is playing for about 100ms before switching to the accurate cue ID number. It becomes much scarier when I hit Cue 2 after hitting cue 9, say, because then it seems to indicate momentarily that I hit the wrong cue.

As it turns out, this was just because mitti was fading between cues. Setting the transition to 0 on all cues fixed this.


Android won't load rxjs anymore

When using new version of nativescript-angular 1.4.0 I cannot run android development anymore.
On iOS part it works fine.
I rollbacked to previous version (1.1.0) and everything works fine again.
I get following error all the time with 1.4.0:
JS: TypeError: this.actions$.ofType(...).mapTo is not a function
I reported a stackoverflow issue here:
https://stackoverflow.com/questions/42203497/android-mapto-is-not-a-function
It seems that there is a problem loading rxjs dependency. I didn't change anything in my code except dependencies versions:
  "dependencies": {
    "@angular/common": "2.4.7",
    "@angular/compiler": "2.4.7",
    "@angular/core": "2.4.7",
    "@angular/forms": "2.4.7",
    "@angular/http": "2.4.7",
    "@angular/platform-browser": "2.4.7",
    "@angular/platform-browser-dynamic": "2.4.7",
    "@angular/router": "3.4.7",
    "@ngrx/core": "1.2.0",
    "@ngrx/effects": "2.0.0",
    "@ngrx/store": "2.2.1",
    "@types/core-js": "0.9.35",
    "@types/escape-string-regexp": "0.0.30",
    "@types/lodash": "4.14.52",
    "@types/node": "7.0.5",
    "angular2-jwt": "0.1.28",
    "angular2-moment": "1.2.0",
    "blueimp-md5": "2.6.0",
    "escape-string-regexp": "1.0.5",
    "knock-knock-jokes": "1.7.0",
    "lodash": "^4.17.4",
    "merge-options": "0.0.64",
    "moment": "2.17.1",
    "nativescript-angular": "1.4.0",
    "nativescript-intl": "~0.0.6",
    "nativescript-iqkeyboardmanager": "^1.0.1",
    "nativescript-social-share": "1.3.2",
    "nativescript-theme-core": "^1.0.0",
    "ng2-translate": "5.0.0",
    "reflect-metadata": "~0.1.8",
    "rxjs": "5.1.0",
    "tns-core-modules": "2.5.0"
  },
  "devDependencies": {
    "@angular/compiler-cli": "2.4.7",
    "@ngtools/webpack": "1.2.9",
    "acorn": "^4.0.10",
    "babel-traverse": "6.22.1",
    "babel-types": "6.22.0",
    "babylon": "6.15.0",
    "codelyzer": "2.0.0",
    "copy-webpack-plugin": "4.0.1",
    "css-loader": "~0.26.0",
    "extract-text-webpack-plugin": "2.0.0-beta.5",
    "fs-extra": "2.0.0",
    "glob": "^7.0.5",
    "htmlparser2": "~3.9.2",
    "lazy": "1.0.11",
    "nativescript-css-loader": "~0.26.0",
    "nativescript-dev-sass": "^0.4.1",
    "nativescript-dev-typescript": "0.3.7",
    "nativescript-dev-webpack": "0.3.3",
    "opener": "^1.4.1",
    "raw-loader": "~0.5.1",
    "resolve-url-loader": "~1.6.0",
    "tns-platform-declarations": "^2.4.0",
    "tslint": "4.4.2",
    "typescript": "2.1.6",
    "webpack": "2.2.1",
    "webpack-sources": "~0.1.3",
    "zone.js": "0.7.6"
  }

When bundling with webpack the application works fine on Android.
This is only not running on development mode (tns run android --emulator --watch)
Any insight appreciated :)

Hey @vincentpalita  try using this version of RxJS
"rxjs": "~5.0.1",

Hi @NickIliev,
omg... I lost so many hours tried to figure out what was going wrong.
This is now working fine.
Thank you very much.
It seems to also fix this issue:
https://github.com/NativeScript/nativescript-cli/issues/2487
Thanks again!
Vincent


DropOnDeath=Everything may not properly consider quantity

Configuring a DropOnDeath value of Everything will correctly return all ingredients used to create a skeleton, but does not seem to correctly return the quantities. For example: Creating a fire archer consumes 6 bones and 10 fire arrows, but on death, it is only dropping 1 bone and 1 fire arrow.
This bug discovered while debugging issue #224

Further testing indicates it only happens if crates are not being used too.

Huh.


[coinutils] update to latest

Fixes #39222

[x] Changes comply with the maintainer guide.
[x] SHA512s are updated for each updated download.
[ ] The "supports" clause reflects platforms that may be fixed by this new version.
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

Thanks for the updates!


Mobile: keyboard and size of chat

when typing a response the input can't be seen as the view height is a lot smaller due to the keyboard taking up a large proportion of screen real estate. Could be complicated but look at when input is selected the chat takes up 100% of the view?
also on iPhone the input box is usually covered by the lower nav bar.

Closing as this was fixed


include tolgee-ui just in certain modes

Hi,
I recently ran webpack-bundle-analyzer with angular build stats and notice that tolgee-ui is a very very huge dependency, i follow the current instructions
import {NgxTolgeeModule} from "@tolgee/ngx";
import {UI} from "@tolgee/ui";
import {NgModule} from '@angular/core';
import { environment } from '../environments/environment';

@NgModule({
  declarations: [
    ...
  ],
  imports: [
    ...,
    NgxTolgeeModule.forRoot({
      apiUrl: environment.tolgeeApiUrl,
      apiKey: environment.tolgeeApiKey,
      ui: environment.tolgeeApiKey ? UI : undefined
    }),
...,
],
...,
})
export class A

and is included anyways in production build
In Production environment tolgeeApiKey is undefined
export const environment = {
  tolgeeApiKey: undefined,
}

Do you have a way to only include this dependency in development mode?
Currently the only solution i found is to comment just before ng build

Hi there. You can import the UI conditionally using require:
https://github.com/tolgee/ngx-example/blob/main/projects/sampleapp/src/app/app-routing.module.ts
But it's actually outdated in the docs, I'll fix this. Thanks!

Thanks, I will do it!


Bump dns-packet to ^5.2.4 (take 2)

Address vulnerability CVE-2021-23386.
All tests pass.
Supersedes #23 which included a superfluous merge commit.

Thanks!, 4.2.2

Thanks!, 4.2.2

No, thank you for the quick reply!


chore: bdd-spring-1576852644 to 0.0.1

chore: Promote bdd-spring-1576852644 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Issue in PCA's projection function

Hi all,
Thanks for this library, I think it can be useful for my own research.
I am trying to use the projection function of the PCA. However, the result of the project is always a vector with the length of the high-dimensional space. Also, a dimension analysis of the matrix/vectors of the projection function, shows that there is something weird. Is this a bug or am I missing something?
I suspect that there is a .transpose() missing in the definition of the projection function  		tapkee::ProjectingFunction projecting_function(new tapkee::MatrixProjectionImplementation(projection_result.first,mean_vector));
I tested this on my side, and I managed to retrieve the embedding after projecting the training dataset with my modified projection function.
Thanks

Hey @Aneoshun,
thanks for reporting. Let me check and get back to you.

I tried adding transpose in PR #46 and it fixed the problem indeed. Although the tests are failing on Travis, it might be due to Eigen versions.


Unable to infuse broken spawners with a soul vial

Issue Description:
Player reported that he can't infuse a broken spawner with a wither skeleton. He has no admin powers so will have acquired all the parts in survival.
What happens:
I tested by spawning in a Soul Binder, broken blaze spawner and soul vials for wither skel, ghast and bat.
The Soul Binder accepts the vial, spawner and XP then just sits there and does nothing. I reset the machine in crafting grid, tried various redstone settings and flipped a lever a few times. Nothing made it work.
This appears to be a new problem as I was able to infuse a whole bunch of spawners for my own base a few weeks ago.
What you expected to happen:
Steps to reproduce:

Insert soul vial and broken spawner
Click "take xp from player"
XP goes 8/8 with green text.
... nothing further happens

Affected Versions (Do not use "latest"):

EnderIO: 1.10.2-<IP_ADDRESS>_beta
EnderCore: 1.10.2-<IP_ADDRESS>-beta
Minecraft: 1.10.2
Forge: 2122

Your most recent log file where the issue was present:
Clients and server logging in debug but nothing related appearing.

I tested both in singleplayer and multiplayer, it works fine for me. There may be either some other mod interfering or those mobs got blacklisted in the config server-side.
(You did power the Soul Binder?)

Worth asking, but yes I did :-)
I shall do some more testing after I've had some sleep and get back to you.

OK, I tested in SSP and it works fine. Tried again on the server and still no go. Server has restarted since, so it's not that. I guess the next step is to download the server and run it up locally.
We already run the server with debug logging. Is there additional debugdebug that I can activate for EnderIO?

Found it!
I found that after deleting the enderio.cfg, it worked with the freshly created file so I compared the two and found I:soulBinderBrokenSpawnerLevels=8 vs my original of I:soulBinderBrokenSpawnerLevels=15.
When updating mods, we just put in the new mod.jar file and leave the existing config file in place. At some point recently it seems that you've adjusted the XP levels required for various things, including that required to infuse a broken spawner.
Our config file specified 15 levels but the Soul Binder GUI only wants, and only accepts, 8 levels. Switching I:soulBinderBrokenSpawnerLevels between 15 and 8 is the difference between it working and not working. So looks like the Soul Binder isn't supporting the config option at the moment.
Cheers!

Did you keep those values in sync between client and server? The GUI (including the "use player XP button") uses the value from the client's file but the processing then uses the server value.

Perhaps initially but not during upgrades. I didn't set up the pack originally but I recently rebuilt the pack to use Solder. I noticed during my testing that EnderIO said that it was pulling a copy of the config down from the server which I figured was a good thing so I left it to it.
Since our server enderio.cfg was set to 15 but the clients were showing 8, that suggests either I screwed up or the copy from server didn't do that bit. I'll test that again later.

In retrospect, I may be confusing that config sync with tconstruct.  Sorry for wasting your time! Looks like it was just sloppy admin on my part.
As an aside, if you're bored, you might look at putting something on the client side that updates the local config to match what's on the server.

It doesn't pull the whole config but only a select few critical values. Those that were critical when that sync feature was first implemented...
Our config is so huge, nobody wants to really touch it. But it is in need for reimplementation using one of the available frameworks which include full syncing.


Jenkins access via basic auth not working any more

Since the update via app store (to v 25.0) I get unauthorized errors in pipeline overview for all pipelines using basic auth access for jenkins based builds.
CCMenu is able to poll the list of projects from Jenkins on the "Add project from CCTray feed" dialog when I use basic auth with my credentials and add recursive cc.xml URL

However when I select a pipeline and apply my changes, the related pipeline is shown as unauthorized.

I checked that CCMenu has access to the related keystore password entries according to the settings in the credentials.

I can confirm the same issue. The GH integration seems to work well, but all of my jenkins pipelines are now broken and I can't get it to work again.
As @oli99sc reported we know the credentials work since we can see the list of projects in the configuration view, but the pipelines are all being reported as 'unauthorized'.

It's curious that the pipelines in the window report "unauthorised" and not "no matching password in Keychain", but there's definitely a bug now when adding basic auth protected CCTray projects. Looking into it.
Can you confirm: do the pipelines show "unauthorised" directly after upgrading from CCMenu 15 to 25? And do they show the same error when you try to re-add them?

I can confirm all pipelines were in unauthorized state after the update. I removed all configured pipelines and added one which immediately also went to unauthorized.

Still can't reproduce the "unauthorized" state, but I have fixed a bug that prevented the password for new pipelines to be stored.
Is it maybe possible that the password in your keychain is outdated? If that were the case, then CCMenu would try to use the outdated password, and get an "unauthorized". Adding a new pipeline would result in the same outcome, because v25.0 has this bug where it doesn't store the password in the keychain, which means CCMenu would add the pipeline but would continue to try to use the old password from the keychain.
Can you have a look at CCMenu 25.1 and let me know whether this allows you to add new pipelines successfully?

I tried to re-add a pipeline and re-paste a token, which allowed to get the list of jobs, but then the status would always be unauthorized. We know the credentials work, since we can get the list of jobs from the config UI, the problem is only on getting the individual statuses somehow. Is it possible that the individual statuses change the http url which would lead to the unauthorized error?
Again, rolling back to v15 fixes the issue without me having to muck with the settings so the token in Keychain is correct.

@sodul Can you confirm what you mean by "normal passwords are not possible to use"? My understanding is that you get an API token from Jenkins and put that into the password field in CCMenu, right?

Just to make sure: when you look at the URL in the pipeline window, it has the correct user name, right?

And then, when you open the KeyChain Access app, you have an entry for that URL with the correct password / token, right?

To help diagnose this issue I have created a developer release with additional logging.
Can you please run the Console app, apply a process filter for CCMenu, and "start streaming". Then, launch CCMenu. Theoretically you should see messages like the ones below. This is what I see with the fake server I use for development. But with your Jenkins installs something must be different. Just what?

@sodul Can you confirm what you mean by "normal passwords are not possible to use"? My understanding is that you get an API token from Jenkins and put that into the password field in CCMenu, right?

Yes, Jenkins has many ways to authenticate. Our instances use SSO with a third party provider and we create API tokens from the Jenkins UI in order to use the Jenkins CLI, API, or CCMenu.
With the Dev release I see:
default	13:49:20.019026-0700	CCMenu	Retrieving password for<EMAIL_ADDRESS>from keychain
....
default	13:49:20.148454-0700	CCMenu	Got password (length = 34)
default	13:49:20.149549-0700	CCMenu	Making request for url<EMAIL_ADDRESS>with authorization ***** ****************************************************************************
default	13:49:20.154947-0700	CCMenu	Connection 1: enabling TLS
default	13:49:20.154958-0700	CCMenu	Connection 1: starting, TC(0x0)
default	13:49:20.154992-0700	CCMenu	[C1 24A8CFD7-8F5F-4B66-AFA1-DF43B02AF70F Hostname#fa44b5fa:443 quic-connection, url hash: fdd42b49, definite, attribution: developer, context: com.apple.CFNetwork.NSURLSession.{41B13D2C-405A-48A0-B2B8-63B06F1BA674}{(null)}{Y}{2}{0x0} (private), proc: BF2FE5E4-5302-3618-9164-DAEA18A4C53E] start
default	13:49:20.155019-0700	CCMenu	[C1 Hostname#fa44b5fa:443 initial parent-flow ((null))] event: path:start @0.000s
default	13:49:20.155167-0700	CCMenu	[C1 Hostname#fa44b5fa:443 waiting parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: path:satisfied @0.000s, uuid: DB2C8CD0-C096-459C-AFFA-AAD8A144EE7E
default	13:49:20.155265-0700	CCMenu	[C1 Hostname#fa44b5fa:443 in_progress parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: flow:start_connect @0.000s
default	13:49:20.155273-0700	CCMenu	nw_connection_report_state_with_handler_on_nw_queue [C1] reporting state preparing
default	13:49:20.155358-0700	CCMenu	[C1 Hostname#fa44b5fa:443 in_progress parent-flow (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: flow:start_child @0.000s
default	13:49:20.155417-0700	CCMenu	[C1.1 Hostname#fa44b5fa:443 initial path ((null))] event: path:start @0.000s
default	13:49:20.155531-0700	CCMenu	[C1.1 Hostname#fa44b5fa:443 waiting path (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: path:satisfied @0.000s, uuid: DB2C8CD0-C096-459C-AFFA-AAD8A144EE7E
default	13:49:20.155617-0700	CCMenu	[C1.1 Hostname#fa44b5fa:443 in_progress transform (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: transform:start @0.000s
default	13:49:20.155754-0700	CCMenu	[C1.1.1 Hostname#fa44b5fa:443 initial path ((null))] event: path:start @0.000s
default	13:49:20.155872-0700	CCMenu	[C1.1.1 Hostname#fa44b5fa:443 waiting path (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: path:satisfied @0.000s, uuid: 24A43546-0E87-406D-AE7C-B67BD4629AB0
default	13:49:20.155997-0700	CCMenu	[C1.1.1 Hostname#fa44b5fa:443 in_progress resolver (satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns, uses wifi)] event: resolver:start_dns @0.000s
default	13:49:20.156130-0700	CCMenu	Task <5C3D77E1-F76B-45B7-89AC-0F90F3EB5DB8>.<1> setting up Connection 1
default	13:49:20.156086-0700	CCMenu	[0x600002f51860] activating connection: mach=true listener=false peer=false name=com.apple.dnssd.service

Something to note, we have a 'test' instance which we have not hooked to SSO and it uses regular password auth. I tried to add a connection to it with password, and everything works fine. I tried with a toke it works fine as well.
In our SSO enabled instances the usernames are<EMAIL_ADDRESS>on our test instance it is just user. I tried to create test user with an email address as the username but Jenkins does not allow that for internally managed users.
I suspect that the issue is the @ in our usernames that get transformed to %40. Somehow the request done to get the list of statuses in the configuration UI is able to authenticate, but then for the call to get the actual statuses it behaves differently.

Thank you for your investigation. It was the @ in the user name that caused the problem. In the dialogue where you add pipelines the user name is kept as a string and passed directly to the request builder. It's only in the feed reader that the user name is taken from the URL.
In addition, I had moved away from a deprecated API on the URL class to a new API, which introduced an optional boolean flag to specify whether you want the user name as is or percent encoded. And for some reason someone at Apple thought it was a good idea to make percent encoded the default...

I can confirm that v26.0 is now working as expected.
There is a slight regression where some of my urls no longer work if they do not end with a trailing /: /cc.xml/ works, but /cc.xml no longer works. I assume the old version would try to append a trailing / if missing.
Since there is no ui to update the urls, I have to export the json, fix it, import the fixed json, and delete the old entry. This is a one time thing so not too bad.


The db history topic or its content is fully or partially missing

Describe the bug
A clear and concise description of what the bug is.
Environment :

Flink version :  1.13.2
Flink CDC version: 2.0
Database and version: mysql 5.7

To Reproduce
Steps to reproduce the behavior:

Thes test data :
The test code :
The error :

Additional Description
If applicable, add screenshots to help explain your problem.

1.使用的flinksql
2.多个cdc source表 union all
3.第一次失败（java.io.IOException: Insufficient number of network buffers: required 2, but only 0 available. The total number of network buffers is currently set to 10977 of 32768 bytes each. You can increase this number by setting the configuration keys 'taskmanager.memory.network.fraction', 'taskmanager.memory.network.min', and 'taskmanager.memory.network.max'.）后，第二次重启报Caused by: io.debezium.DebeziumException: The db history topic or its content is fully or partially missing

Hi, @peterjqy
This issue seems the same as #326.
It was resolved by Flink CDC version: 2.0.1.
Could you please upgrade the flink cdc connector version to 2.0.1 and try it again?

ok


Alert Notify

Question
Hi Guys,
I just installed hertzbeat on my server using docker,refer to this link : https://techviewleo.com/monitor-linux-systems-using-hertzbeat/
I can access the WEB UI,however there is some question i need to ask

I can add my alert notify to telegram because there is option to telegram,you can refer to the screenshot below :
https://postimg.cc/ts949bY2

If i want to monitor another server and how to install an agent to the server target ?

Please Advice
Thanks in advance

Hi, thanks for using.  The telegram notify has supported but not publish in latest version. It will supported in next version v1.2.5 few days later.

If i want to monitor another server and how to install an agent to the server target ?

hertzbeat is agentless. you can monitor linux ubuntu... directly by configing ip port ssh params with WEB UI.

Hi @tomsun28,
Thanks for your time to reply.
Noted On this.


Request failed with code 401 - Could not authenticate you. (Twitter code 32)

https://developer.twitter.com/en/portal/projects/1589055386233233408/apps/25948624/keys
APIキー、アクセストークンを再作成して実行すると以下のエラー
{
  error: true,
  type: 'response',
  code: 403,
  headers: {
    perf: '7626143928',
    'content-type': 'application/json;charset=utf-8',
    'cache-control': 'no-cache, no-store, max-age=0',
    'x-transaction-id': 'c8e8809b0601e97e',
    'content-encoding': 'gzip',
    'content-length': '270',
    'x-response-time': '92',
    'x-connection-hash': 'eda02d766f1c43984344980cb8e086e6fb1452b97db577655fcad3a87d14ba97',
    date: 'Sat, 29 Apr 2023 21:41:35 GMT',
    server: 'tsa_m'
  },
  rateLimit: undefined,
  data: {
    errors: [
      {
        message: 'You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve',
        code: 453
      }
    ]
  },
  errors: [
    {
      message: 'You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve',
      code: 453
    }
  ]
}


[SUPPORT] Spark SQL to query metadata such as hudi table snapshot

Support Spark SQL to query metadata such as hudi table snapshot。Example:
#Iceberg sql
SELECT * FROM bigdata.ice_arctic_demo.snapshots;
SELECT * FROM bigdata.ice_arctic_demo.history;
SELECT * FROM bigdata.ice_arctic_demo.files;
SELECT * FROM bigdata.ice_arctic_demo.manifests;

As far as I know, we couldn't get meta info through sparkSQL for now.
Fortunately, we can get these info through hoodie built-in cli. Linked https://hudi.apache.org/docs/cli

As far as I know, we couldn't get meta info through sparkSQL for now. Fortunately, we can get these info through hoodie built-in cli. Linked https://hudi.apache.org/docs/cli

@melin @zhangyue19921010 I will use the call procedure command to obtain meta information through SparkSQL. If Directly abstract it into a table to query, and I will evaluate the change scope and workload.

@XuQianJin-Stars : thanks. Please file a tracking jira and close this one out.

https://issues.apache.org/jira/browse/HUDI-3511 This jira for call procedure command to obtain meta information through SparkSQL.

https://issues.apache.org/jira/browse/HUDI-3511 This jira for call procedure command to obtain meta information through SparkSQL.

thanks!


[2.0.0-rc.1 build 1] Remove run_constrained that prevents co-installation with openforcefields

The benchmarking stack is pinned to openforcefield=0.8.4, which requires openforcefields. Now that we're looking to include the sage release candidate in benchmarking season 1, we need to include openff-forcefields in that same environment. However, the run_constrained pin in this recipe prevents installation alongside openforcefields.
While it's pretty important to keep openforcefield and openff-toolkit from being installed simultaneously, there's far less potential harm in having openforcefields and openff-forcefields installed together. Because of the entry points these two can happily coexist, and it's no problem if there are multiple FF files found with the same filename, since they're guaranteed to be identical.
So, I think the simplest thing to do to unblock the benchmarking effort is to just remove this pin.
CC @dotsdl - I think this is the cleanest way to remove the blocker we encountered today. Unless you can think of anything simpler tomorrow morning, then we should go ahead with this.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Would it be simpler to just cut a new openforcefields release?

I’d thought about that, but it would add another moving piece to the
release process when we do the final sage release (as well as any other
release candidates). So I’d prefer to use openff-forcefields as the single
source of truth to avoid duplication/complexity.
On Thu, Jul 8, 2021 at 10:37 PM SimonBoothroyd @.***>
wrote:

Would it be simpler to just cut a new openforcefields release?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/conda-forge/openff-forcefields-feedstock/pull/5#issuecomment-876927613,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD4STV2R2TDWGZQ4DOB5NEDTW2DJNANCNFSM5AB6OT6Q
.

It seems like there's two ways we could do this:

The way this PR proposes, which has a small chance of breaking/complicating a lot of things
Making a new openforcefields package, which has a medium chance of breaking a small number of things and has more human touchpoints, but it's things that I'm actively monitoring and touching anyway, so I can catch+fix complication without harming anything else.

So, per Simon's feedback, I'll go ahead with the latter option, and will close this issue.

I've manually built the new openforcefields package and uploaded it here: https://anaconda.org/omnia/openforcefields/files


very long time no update, I wish author is preparing something big

something will drop my jaw and pop my eye balls.
And I hope author had a very fabulous holiday!

hahaha I wish too

something will drop my jaw and pop my eye balls.
And I hope author had a very fabulous holiday!

You can try this mod, fork from here and update often mod-playerbot

Please close this if there is no further discussion to add so we can clear up the issues