Night CI 2024-01-18: Failed

action url: https://github.com/spidernet-io/egressgateway/actions/runs/7575318037

• [FAILED] [30.537 seconds]
Reliability [Reliability]
/home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:30
  Test the drift of the EIP [BeforeEach]
  /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:43
    restart components [R00007]
    /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:225
      restart calico-kube-controllers
      /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:299

  Timeline >>
  > Enter [BeforeEach] Test the drift of the EIP - /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:43 @ 01/18/24 20:55:40.915
  succeeded to create the gateway: egw-3f00ce4d-d525-4b05-9b86-7bf737d77e8f
  v4DefaultEip: <IP_ADDRESS>, v6DefaultEip: fc00:f853:ccd:e793::203
  Automatically polling progress:
    Reliability Test the drift of the EIP restart components restart calico-kube-controllers (Spec Runtime: 20s)
      /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:299
      In [BeforeEach] (Node Runtime: 20s)
        /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:43

      Spec Goroutine
      goroutine 797 [sleep]
        time.Sleep(0x1dcd6500)
          /opt/hostedtoolcache/go/1.20.5/x64/src/runtime/time.go:195
        github.com/spidernet-io/egressgateway/test/e2e/common.CreateDaemonSet({0x2971330, 0xc000130008}, {0x2978f00, 0xc0001c5b90}, {0xc00088ce40, 0x33}, {0xc000046246, 0x2e}, 0x0?)
          /home/runner/work/egressgateway/egressgateway/test/e2e/common/ds.go:71
      > github.com/spidernet-io/egressgateway/test/e2e/reliability_test.glob..func3.1.1()
          /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:69
            |
            | // daemonSet
            > daemonSet, err = common.CreateDaemonSet(ctx, cli, "ds-reliability-"+uuid.NewString(), config.Image, time.Minute/2)
            | Expect(err).NotTo(HaveOccurred())
            | GinkgoWriter.Printf("succeeded to create DaemonSet: %s\n", daemonSet.Name)
        github.com/onsi/ginkgo/v2/internal.extractBodyFunction.func3({0x0, 0xc00070e180})
          /home/runner/work/egressgateway/egressgateway/vendor/github.com/onsi/ginkgo/v2/internal/node.go:463
        github.com/onsi/ginkgo/v2/internal.(*Suite).runNode.func3()
          /home/runner/work/egressgateway/egressgateway/vendor/github.com/onsi/ginkgo/v2/internal/suite.go:889
        github.com/onsi/ginkgo/v2/internal.(*Suite).runNode
          /home/runner/work/egressgateway/egressgateway/vendor/github.com/onsi/ginkgo/v2/internal/suite.go:876
  [FAILED] Unexpected error:
      <*errors.errorString | 0xc0001a1b40>:
      create DaemonSet time out
      {
          s: "create DaemonSet time out",
      }
  occurred
  In [BeforeEach] at: /home/runner/work/egressgateway/egressgateway/test/e2e/reliability/reliability_test.go:70 @ 01/18/24 20:56:11.25


Relative markers

Is your feature request related to a problem? Please describe.
Not a bug, but when adding credits (especially in bulk) I would like to be able to relatively set a marker to (for example) the last 30 seconds of an episode. This is especially useful in cases where each episode could be a different length but have the same credits length.
Describe the solution you'd like
Perhaps when entering a negative time, it is calculates as milliseconds subtracted from the total time.
Describe alternatives you've considered
Manually figuring out times for every episode.
Additional context
N/A, can add if requested.

Thanks for the suggestion! I like the idea of "negative timestamp == offset from the end." I should be able to get around to this sometime this week.

Also just thought of maybe something that lets you do relative from start time. So if you know an intro is 30 seconds maybe you can do +30 and it will take the start time and add 30 to it. That idea is less fleshed out though haha.

The negative timestamps should be implemented in this commit: 918c86ea53527fcd6b6cde6a2b424352c5264076. It might take longer for it to reach a beta/main release though, since there are a bunch of other in-progress changes that I don't quite feel comfortable putting in an official release yet (and I was too lazy to create a feature branch for the work).
As for the relative start time, would that just be to avoid having to do the math/extra typing of "1:43.352 plus 30 seconds is 2:13.352," and instead do something like "1:43.352, +30.0" or are there other benefits that I'm not thinking of off the top of my head?

Marking this as closed, since the initial request is in the latest beta, but let me know if you have more thoughts on the positive offset, or run into issues with the current negative offset implementation.


Error when fetching from source:

I'm recieving an error when trying to fetch the project from the GIT repository. I'm not all that familiar with Go, so apologies if I am missing something obvious:
adamsj@electra:~$ go get -u github.com/justwatchcom/gopass
# github.com/justwatchcom/gopass/action
.go/src/github.com/justwatchcom/gopass/action/totp.go:67: undefined: time.Until

Hi,
thanks reporting the issue. I suspect it's a go version problem, as time.Until has been added more or less recently (see https://github.com/golang/go/issues/14595).  I just tried to reproduce the issue and wasn't able to do so with go1.8.

FYI: We always develop and test against the latest stable Go release only.
We might mention this in the docs.

Thanks for your help. Solved by getting rid of the older Go packages from the Ubuntu repos and installing 1.8.3 manually.


[backport] Add iDeep to backend docs

Backport of #5121

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit 759ca38c8654571523f17a8f45c244c8346cec54, target branch v4) succeeded!


[th/makefile-default] Makefile: add default target that does a local build

With make, when typing make without specifying a target, the first target will run. Currently that is prepare target which runs hack/prepare.sh.
That prepare script, among others, tries to restart libvird service (which requires root). It does not seem something that should be done by default (or regularly).
Instead, the default target should do something that does not require root and is somewhat useful. Doing a local build seems to be that.
Add a "default" target, which is also the first target in the Makefile and thus the default. That invokes the "build" target.
This makes a plain make doing something more(?) useful.

/approve

/ok-to-test

/lgtm

/override ci/prow/e2e-dpu-operator-tests


feat: project template component and add create project modal

Description
Linear Ticket
https://linear.app/autokitteh/issue/UI-808/webui-create-project-from-template
What type of PR is this? (check all applicable)

[ ] 💡 (feat) - A new feature (non-breaking change which adds functionality)
[ ] 🔄 (refactor) - Code Refactoring - A code change that neither fixes a bug nor adds a feature
[ ] 🐞 (fix) - Bug Fix (non-breaking change which fixes an issue)
[ ] 🏎 (perf) - Optimization
[ ] 📄 (docs) - Documentation - Documentation only changes
[ ] 📄 (test) - Tests - Adding missing tests or correcting existing tests
[ ] 🎨 (style) - Styles - Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
[ ] ⚙ (ci) - Continuous Integrations - Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
[ ] ☑ (chore) - Chores - Other changes that don't modify src or test files
[ ] ↩ (revert) - Reverts - Reverts a previous commit(s).

Please use this or similar library to display readme: https://github.com/remarkjs/react-markdown
Not as an editor, as we have these days, but as a page:

Use GFM (GitHub Flavored Markdown) as described here: https://github.com/remarkjs/react-markdown?tab=readme-ov-file#use-a-plugin
To convert the markdown from GitHub flavor, and not the regular one.


CLOUDP-79639: Enable the regionalized private endpoint setting for one Atlas project

Proposed changes

Jira ticket: CLOUDP-79638
Jira ticket: CLOUDP-79639
Jira ticket: CLOUDP-79640

Checklist

[x] I have signed the MongoDB CLA
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added any necessary documentation (if appropriate)
[x] I have run make fmt and formatted my code

Further comments

Enable
  ~/workspace/mongoCLI git:(CLOUDP-79639) ✗ ./bin/mongocli atlas privateendpoint regionalModes enable -o json
{
  "enabled": true
}
➜  ~/workspace/mongoCLI git:(CLOUDP-79639) ✗ ./bin/mongocli atlas privateendpoint regionalModes enable
Regionalized private endpoint setting enabled.

Disable
✗ ./bin/mongocli atlas privateendpoint regionalModes disable
Regionalized private endpoint setting disabled.
➜  ~/workspace/mongoCLI git:(CLOUDP-79639) ✗ ./bin/mongocli atlas privateendpoint regionalModes disable -o json
{
  "enabled": false
}

Describe
./bin/mongocli atlas privateendpoint regionalModes get
ENABLED
false
➜  ~/workspace/mongoCLI git:(CLOUDP-79639) ✗ ./bin/mongocli atlas privateendpoint regionalModes get -o json
{
  "enabled": false
}

waiting for https://github.com/mongodb/go-client-mongodb-atlas/pull/174

waiting for https://github.com/mongodb/go-client-mongodb-atlas/pull/174

atlas_private_endpoint_e2e

atlas_private_endpoint_e2e


PyCall seems to ignore a function in theano called function

I've been trying to use PyCall to wrap theano.  I started with the simple example from the tutorial
>>> import theano.tensor as T
>>> from theano import function
>>> x = T.dscalar('x')
>>> y = T.dscalar('y')
>>> z = x + y
>>> f = function([x, y], z)

However, if I do
@pyimport theano.compile.function as func

func has no method function.  It does seem to have all the other methods defined in the python file.
Is it possibly because of the naming, that the word function is causing the problem?

Yes, it's a reserved word in Julia so it can't be a member name of the imported module.  As described in the README, one must use func.pymember(:function) instead.


signalbackup-tools: 20220303 -> 20220314

Description of changes
Update package to latest version.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 164148 run on x86_64-darwin 1

1 package built:

signalbackup-tools

@SuperSandro2000, could you approve/merge? Thanks :)


Make view easier to use in modules?

I'm bringing #294 back from the dead!
Now that we have state slice and modules, I thought it was kinda awkward module views are hard to use.
Introducing views!
https://gist.github.com/Pyrolistical/f3a4b1577741dd847aef73300f8f11c3

(I didn't re-cap the demo, but you can run the new code yourself it works like this!)
I wrote a HoA withViews and added a views parameter to the view function. This allows us to write stuff like
withViews(app)({
  view(state, actions, {left, right}) {
    return
      <left name="Left" />
      <right name="Right" />

Sum {state.left.count + state.right.count}

  },
  modules: {
    left: counter,
    right: counter,
  }
}, document.getElementById('app-entry'))

where counter is just a module
const counter = {
  state: {
    count: 0
  },
  view(state, actions, views) {
    return

{state.name} {state.count}

      <button onclick={actions.down} disabled={state.count <= 0}>-</button>
      <button onclick={actions.up}>+</button>

  },
  actions: {
    down(state) {
      return {
        count: state.count - 1
      }
    },
    up(state) {
      return {
        count: state.count + 1
      }
    }
  }
}

I feel this is a missing piece to the modules story. Should we integrate this into the core or leave this as a HoA? You can see the source for withViews: https://gist.github.com/Pyrolistical/f3a4b1577741dd847aef73300f8f11c3#file-index-html-L83

@Pyrolistical What happens if instead of calling Counter(), you simply assign Counter to both left and right?

Still works lol, I was wondering about that....I'll simplify

@Pyrolistical Please add two more examples, (1) (easy) add a button to the main view that adds +1 to both left and right, and (2) (hard) a button that adds a new counter, so no more right or left, but a collection of counters.

I welcome you into the @zaceno and I war.
I am thankful you choose my side :tada:
@zaceno's thoughts : https://github.com/Zaceno/hyperapp-module-views
Mine : https://github.com/Swizz/hyperapp-module-view

@Swizz any links to the war history?

Perhaps also interesting (or at least "clever") I figured out yesterday. You can have module views without the HOA (or at least for as long we still have thunks which won't be for long from the looks of it ;) )
const counter = {
  state: {
    value: 0
  },
  actions: {
    up: state => ({value: state.value + 1}),
    down: state => ({value: state.value -1}),
    view: (state, actions) => _ =>

      <button onclick={actions.down}>-</button>
      {state.value}
      <button onclick={actions.up}>+</button>

  }
}

app({
  modules: {counter},
  view: (state, actions) =>

    <actions.counter.view />

})

All is happening on Slack, but we reached the fact we are not considering modules the same way.
I think this two statements will sum up the "war"

@zaceno : I agree we’re talking about two different things. You’re talking about composing mini apps that could work on their own into a big app. (I’d also like that by the way). I’m talking about grouping views that relate to the same state and actions into a module. They just seem so close, it can’t be entirely irreconcilable

@Swizz : So. You have summarized the view problem into only one question. What will be our definition of a module ? Is using a module using an utilities box, or adding a small app into our tree under a namespace ?

@Pyrolistical I am looking forward to see the two additional examples! 🙏

The way I see it, this sort of module views are basically the same as getters/computeds The only thing is that they return a vtree rather than a number or string. (And a "traditional" getter only needs access to the state, not actions, I suppose) My point being: rather than having support for something named "views" specifically, I'd rather have support for general getters, and we can use getters for "pre-wired views" as well as other things.

@JorgeBucaran here are the goods, i appended to the gist.
I ran into #437 and #438, so I included #426 at the end of the gist to get around it.
(1) (easy) add a button to the main view that adds +1 to both left and right

Just a new action:
addBoth(state, actions) {
  actions.bleft.up()
  actions.bright.up()
  // this or if you want a single update
  // return {
  //   bleft: {
  //     ...state.bleft, // not needed in this case, but generally is
  //     count: state.bleft.count + 1
  //   },
  //   bright: {
  //     ...state.bright, // not needed in this case, but generally is
  //     count: state.bright.count + 1
  //   }
  // }
}

(2) (hard) a button that adds a new counter, so no more right or left, but a collection of counters.

This one was more tricky, I added a new many module, which takes in a module and allows you to add more
function many(module) {
  return {
    state: {
      substates: []
    },
    view(state, actions) {
      return state.substates.map((substate, i) => {
        const subactions = {}
        for (const action in module.actions) {
          subactions[action] = () => {
            const updatedSubstate = module.actions[action](substate)
            actions.update({
              substates: [...state.substates.slice(0, i), updatedSubstate, ...state.substates.slice(i + 1, state.substates.length)]
            })
          }
        }
        return module.view({
          ...substate,
          ...state.extraProps(i)
        }, subactions)
      })
    },
    actions: {
      push(state, actions) {
        return {
          substates: [...state.substates, {
            ...module.state
          }]
        }
      },
      update(state, actions, data) {
        return data
      }
    }
  }
}

usage looks like:
modules: {
  counters: many(counter)
}

the view looks like:

C. Counters, counters everywhere

<counters extraProps={(index) => ({name: `counter[${index}]`})} />
<button onclick={actions.counters.push}>Add Counter</button>

Sum {state.counters.substates.reduce((total, {count}) => total + count, 0)}

The reason why I went down this rabbit hole was lazy load modules!

function lazyLoad(modulePath) {
  let loadedModule
  const placeholderModule = {
    init(state, actions) {
      fetch(modulePath)
        .then((response) => response.text())
        .then((data) => {
          loadedModule = eval(data)
          actions.loaded()
        })
    },
    state: {
      loading: true
    },
    view(state, actions) {
      if (!loadedModule) {
        return h("p", {}, "loading...")
      }
      return loadedModule.view(state, actions)
    },
    actions: {
      loaded(state, actions) {
        return {
          loading: false
        }
      }
    }
  }

  return placeholderModule
}

usage
modules: {
  someModule: lazyLoad('someModule.js')
}

which then leads to another question....this doesn't work for actions. currently there is no way to add actions dynamically

which then leads to another question....this doesn't work for actions. currently there is no way to add actions dynamically

No way to add actions dynamically.

Actually, #435 is a request to support dynamic actions.
However, it is possible to dynamically add actions by recreating the logic of initAction and calling it in a Thunk.

Oh, interesting.

Some API ideas for modules that can export one or more views.
view: {
  Title: (state, actions) => (

{state.title}

  )
}

view: {
  Title: (state, actions) => components => (

{state.title}

  )
}

view: {
  Title: (state, actions) => components => props => (

{state.title}

  )
}

I am going to close here as I have no intention to add views to modules in the near future, but I welcome HOA authors to give it a shot and show me this is the way of the future. 👋😁

We can't do a proper PR as we have not decided yet how to consider modules :

Namespaced toolbox
Small apps for composition

@Swizz You are welcome to create a PR with your preferred API proposal if you want. At first I was opposed to #440, but then you convinced me and that's the way things are now! 🎉

I don't want to make the decision on this. I need to talk a lot more with the community and @zaceno.
Here this is not API design but the final way modules will be for all/most the Hyperapp community

@JorgeBucaran @Swizz Should we open an issue to track discussions/proposals for modules?

@Mytrill @Swizz I close here because:

...I have no intention to add views to modules in the near future, but I welcome HOA authors to give it a shot and show me this is the way of the future. 👋😁

and also:

...I welcome PRs to master too...

But who knows, in the long run we may want to add views to modules after all. For this to happen, there must be a great API proposal, well defended that shows how module views improve our lives more than complicate them.

You are right. I would prefer to use my modules into a real project first.


OSError: dlopen(/Users/iris/Library/Python/3.8/lib/python/site-packages/torch/lib/libtorch_global_deps.dylib, 0x000A): tried: '/Users/iris/Library/Python/3.8/lib/python/site-packages/torch/lib/libtorch_global_deps.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:版本: 1.70.1 (Universal)
提交: 6d9b74a70ca9c7733b29f0456fd8195364076dda
日期: 2022-08-10T06:09:06.916Z
Electron: 18.3.5
Chromium: 100.0.4896.160
Node.js: 16.13.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 21.6.0
OS Version:monterey 12.5

Steps to Reproduce:

when i use vscode jupyter notebook run python code as import torch,it occurred error OSError: dlopen(/Users/iris/Library/Python/3.8/lib/python/site-packages/torch/lib/libtorch_global_deps.dylib, 0x000A): tried: '/Users/iris/Library/Python/3.8/lib/python/site-packages/torch/lib/libtorch_global_deps.dylib' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
i also use arm64 vscode,it same as 1
but i can use terminal ipython to run code `

the error image is

/extJupyter

It looks like this is caused by the Jupyter extension. Please file the issue to the Jupyter extension repository. Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our issue reporting guidelines for more information.
Happy Coding!

i try uninstall jupyter, use py file, the result is

I assume you get the same problem if you leave VS Code out of the equation and simply try to run your Python code from a macOS command shell, right?

@gjsjohnmurray ，yes, you can use terminal or pycharm run code, its ok,but it cant in vscode

@Tyriar please reopen / redirect.

I think this is out of scope of the vscode repo, it seems to depend on however torch and/or python was installed as for some reason it thinks it's x86_64? If it was installed via the Jupyter extension you could create an issue on their repo.


Potential issues

I thought I'd point out some potential issues in the code. I say potential, because I'm no Javascript expert. AFAIK javascript is not OO (by all means correct me if I'm wrong) and I'm not exactly familiar with modern day idiomatic Javascript. Having said that, below three issues are pointed out of which only the last one addresses some non-idiomatic Rust.
1 - Explicit type variable declaration
In the code only one time a variable is declared with the explicit type which happens on line 93. The code here is:
let arguments: Vec<String> = env::args().collect();

So as you know we can leave out the type most of the time since the compiler will figure it out for us. However here you need explicitly state the type, which might be confusing if you are just trying to figure out the syntax pattern.
Maybe no solution is needed, but just explicitly mention this..? Again, maybe Javascript has similar issues, which would mean that this issue isn't an issue at all. Or do it the non fun way and state the type explicitly everywhere, but I wouldn't do that.
2 - Use of self reference (self vs &self vs &mut self)
The &self and &mut self are used on several occasions in impl TodoList and impl TodoItem. I've no idea how this is handled in Javascript, but going with non OO the self should something exotic in Javascript.
Anyway, in the code there is one type 'missing' which is the plain self. (By the way, you can actually change the &self to self and successfully compile and use the program). So, again I've no idea if you have something similar in Javascript, but for me, coming from Python it was a bit confusing. Of course when you understand the ownership model it al makes sense (and you'd probably be able to reason why in this case &self is used instead of self).
The ownership model will probably not be mentioned in such a tutorial, and you could just leave it at &mut self for a mutating operations and &self for non-mutating operations (thus leaving self completely out of the tutorial which is convenient). Another way to handle this use all three cases of self reference and be explicit when to use which (but this could be a little overwhelming).
So yeah, no idea how Javascript handles 'self', not proposing a solution and maybe it isn't an issue at all. I thought I just point this out because of my own programming background.
3 - Not using enumerate()
With the help of Clippy I noticed the loop at line 49:

    fn display_tasks(&self) {
        let mut count = 0;

        println!("Displaying all tasks");

        for todo_item in &self.list {
            println!("{} - [{}] {}", count, todo_item.completed, todo_item.task);
            count += 1;
        }
}

I don't think this is idiomatic Rust and you probably want to use something like enumerate() and not use a variable like count. I thought we actually discussed this the day before, but I might be mistaken.
Otherwise, I think this is actually a great tutorial since it comprehensible and covering a great deal of Rusts name spaces :)

Thanks @MRECoelho this is great feedback and I'll keep it in mind!


Kernels in /usr/share/jupyter or /usr/local/share/jupyter are not found

Environment data

VS Code version: 1.52.0-insider
Extension version (available under the Extensions sidebar): commit 49ff2c6d0cd5b83f9be0bc5c52c8c44dbc66c022
OS (Windows | Mac | Linux distro) and version: Arch Linux
Python version: 3.8.6
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): none
Jupyter server running: Local

Expected behaviour
Find kernels located in

/usr/share/jupyter/kernels
/usr/local/share/jupyter/kernels

Actual behaviour
Those kernels are not found
Possible reason
I think the bug is located in the following lines:
https://github.com/microsoft/vscode-jupyter/blob/49ff2c6d0cd5b83f9be0bc5c52c8c44dbc66c022/src/client/datascience/kernel-launcher/kernelFinder.ts#L324-L328
Where i think the / (root) part is missing. I tried substituting those lines with the following and it seemed to actually work now:
        paths.push(
            path.join('/', 'usr', 'share', 'jupyter', 'kernels'),
            path.join('/', 'usr', 'local', 'share', 'jupyter', 'kernels'),
            path.join(this.pathUtils.home, secondPart)
        );

Well probably this does not apply to /usr/share/jupyter/kernels because that folder seems to be already found by the getInterpreterPaths function, and in that case the / root is present

Thanks for the bug. The fix does seem appropriate. Feel free to submit a PR or we should get to this soon.


remoterendering - cspell found spelling errors in public API surface

Investigation for this PR: https://github.com/Azure/azure-sdk-for-net/pull/23150 found spelling errors. When the linked PR merges this service will be opted out of public API surface spell checking to keep other PRs unblocked. This issue describes how to opt back in.
If the above linked PR has not merged this service is still opted out and not blocked by the detection of spelling errors in the public API surface.
What to do

Correct spelling errors or check in fixes for the false positives
Opt back into Public API surafe spell checking

Correct errors
To correct false positives or learn about spell checking see: https://aka.ms/azsdk/engsys/spellcheck
Spell Check Output
1/1 .\sdk\remoterendering\Azure.MixedReality.RemoteRendering\api\Azure.MixedReality.RemoteRendering.netstandard2.0.cs 991.35ms X
D:\code\azure-sdk-for-net\sdk\remoterendering\Azure.MixedReality.RemoteRendering\api\Azure.MixedReality.RemoteRendering.netstandard2.0.cs:85:110 - Unknown word (Aync)
CSpell: Files checked: 1, Issues found: 1 in 1 files

To check the public API surface locally, in the root of the repo run:
eng/scripts/Export-API.ps1 -ServiceDirectory remoterendering -SpellCheckPublicApiSurface

You may also need to set -SDKType if the appropriate value of SDKType is not all for the service.
Opt back in
NEW INSTRUCTIONS: In the .vscode/cspell.json file remove the line for your service (of the form "sdk/<service>/*/api/*.cs") from the ignorePaths section and check in the change.
OLD INSTRUCTIONS: In the ci.yml file for this service, remove the line: SpellCheckPublicApiSurface: false

Hi @danieljurek, hi @jsquire
My team and I took over ownership for the Azure Remote Rendering SDKs, so I'm looking into this one now.
Unfortunately the typo mentioned here is in a function name ('GetConversionsAync'), so fixing this would imply a breaking change.
Do you have any suggestion how to move forward? Maybe adding the correct spelling as well, marking the wrong one as deprecated and remove it at some point in the future?

I think @AlexGhiondea can help you interface with the right architecture folks for strategies to sort this out. Thanks!

You'll want to speak with @KrzysztofCwalina and @tg-msft, who are the architects for .NET.     Since we do not normally want to include breaking changes, the typical approach that we would use to resolve this would be:

Move the implementation into a new method with the correct name.
Update the existing method to delegate to the new method.
Add [EditorBrowsable(EditorBrowsableState.Never)] to the existing method to hide it from Intellisense and docs.

This has the effect of allowing code using the existing method to continue to work while guiding callers to the new method.   While a motivated individual could call the existing method, since it does not appear in code completion or in documentation, they would either need to know that it exists or be reading it from the source.
That said, I'd recommend discussing with the architects to confirm before taking any action.

It would be worth digging into why our static analysis rule that requires all async methods to end in "Async" did not detect this issue. But yes, we should add a new method, hide the old one, and then obsolete it after a couple of releases.


[WebAPI] IndexedDB, Fx 71 tasks

Trello
https://trello.com/c/StA65qFA/113-indexeddb-api-fx-71
Acceptance criteria

[x] Implement IDBTransaction commit() method (page already exists but needs cleaning up, guides probably need to mention it, BCD needs doing)

Documentation completed:

https://wiki.developer.mozilla.org/en-US/docs/Web/API/IDBTransaction
https://wiki.developer.mozilla.org/en-US/docs/Web/API/IDBTransaction/commit
Compat data added: https://github.com/mdn/browser-compat-data/pull/5118
Rel note added: https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/71#APIs


Cant create areas in the new maps (ilshenar, ter mur, etc)

AREADEF do not work on new maps. I just tested with the latest sphere 56d and it works fine in there.
[AREADEF a_TheTradingPost]
NAME=The Trading Post
P=1107,405,-80,2
RECT=1088,384,1125,422,2
GROUP=Trading Post
FLAGS=region_flag_nobuilding|region_antimagic_gate|region_antimagic_recall_out|region_flag_insta_logout|region_flag_safe

Do you mean that it works only for map 0? Does it create an area on the wrong map (0 instead of 2) or doesn't it create it at all?

Yes. I can only make areas on map0. Maybe map1 too, but not on the rest.

Seem to work.  Look picture
Left before fix, Right After

[AREADEF a_twisted_weald]
NAME=Twisted Weald


arch: xtensa: Call the waiti instruction in up_idle()

Summary

This PR calls the waiti (wait for interrupt) instruction in up_idle() to reduce power consumption.

Impact

This PR affects xtensa architecture (e.g. esp32)

Testing

I tested this PR with both ESP32-DevKitC and QEMU for ESP32.

lgtm.
i have had the identical change in my local tree for a while. i haven't noticed any negative effect at least on qemu.


ci: add pull_request trigger

What are the relevant tickets?
Relates to https://github.com/mitodl/ocw-studio/pull/2015
Description (What does it do?)
We received a PR from a fork: https://github.com/mitodl/ocw-studio/pull/2015. The CI workflow is not configured to run on PRs.
This PR updates the triggers.
How can this be tested?
Just ensure that the syntax is correct.

This change looks structurally good to me. I've asked @pt2302 and/or @gumaerc to acknowledge that they're OK with this process change.

Spoke with @pt2302 and he agrees this change is innocuous. Approved.


Parsing error when using Return.As and quotation marks

Hi,
I ran into a problem when using quotation marks in a Return.As combination.
I'm using BoltGraphClient in .net core.
Using the following example code:
class TestObj
{
    public string Test { get; set; }
}

var example = _neo4j.Cypher.Return(() => Return.As<TestObj>("{ Test: \"\" }")).Results;

The generated QueryText looks like this: RETURN { Test: "" } and is a proper Cypher query.
But Neo4JClient returns the following error:
Neo4j returned a valid response, however Neo4jClient was unable to deserialize into the object structure you supplied.

First, try and review the exception below to work out what broke.

If it's not obvious, you can ask for help at http://stackoverflow.com/questions/tagged/neo4jclient

Include the full text of this exception, including this message, the stack trace, and all of the inner exception details.

Include the full type definition of PendlerModell.Backend.Neo4jConnector+TestObj.

Include this raw JSON, with any sensitive values replaced with non-sensitive equivalents:

{ "columns":["{ Test: "" }"], "data":[[ { "Test":"" } ]] }
Parameter name: content

Inner Exception from Newtonsoft:
After parsing a value an unexpected character was encountered: ". Path 'columns[0]', line 1, position 23.
It looks like the string isn't correctly escaped.
Also, using the property Results which does a remote call is pretty bad design. It's pretty dangerous when using combined create/delete/return queries and then using VS debugger (which tries to access .Results and then accidentially runs the query). And it's annoying for longer running queries. Please consider changing it to a method.

The problem stems from your column name, if you look at what you actually return:
{ "columns":["{ Test: "" }"], "data":[[ { "Test":"" } ]] }
You're returning a column called Test: "" which JSON doesn't know how to parse, if you change your return to be something with an AS:
var example = _neo4j.Cypher.Return(() => Return.As<TestObj>("{ Test: \"\" } AS X")).Results
for example, your parsing will work fine.
In terms of your view on the Results property, there are no plans to change it - there are a lot of other things to fix/add before getting to that level. I get why you're saying it, but it's a major breaking change to put it in and whilst the fix is simple, the breaking changes make it more complex.

Disagree about that, I shouldn't have to worry about the implementation the library uses. Hypothetically what if one day you change newtonsoft to something else which uses another escaping mechanism? Then everyone had to redo their code.
Agree with Results property though, still had to say it :)

Hypothetically that would be a major breaking change and a decision to do that wouldn't be taken lightly - there would have to be very good reasons for doing the change. If you want, you can think of it in the same terms as your 'Result' problem - that is a major change in that it effects all code, but at least would break the compilation. Changing the parser to treat escaping differently would be something that would be orders of magnitude worse than that as the changes would be subtle and only occur in runtime. Any change to the parser would be made keeping escape mechanisms the same as those which currently exist.
By all means feel free to pull request something for this - if it makes sense and works then there's no reason it wouldn't get put in, The other alternative - if you want something that's more 'free' around this sort of stuff - is the Neo4j.Driver as that will happily let this stuff happen.

Well not really a breaking change, if it's transparent, which it should be, since it doesn't directly add value to my cypher.

By all means feel free to pull request something for this - if it makes sense and works then there's no reason it wouldn't get put in

Do you have any pointers in the right direction?
I still like the library, but I believe it should go out of the developers way as much as possible :)


[zh] Sync concepts pages for ingress-controllers.md

Add EnRoute as one of the Ingress Controller API Gateway Options #25972
Signed-off-by: ydFu<EMAIL_ADDRESS>

/lgtm
/approve

/lgtm
/approve


Unable to connect to Elasticsearch at http://localhost:9200.

Hello,
I'm trying to install elastic stack on my cloud (On a scaleway server, docker image server), but status is always red.
I have the message below :
Unable to connect to Elasticsearch at http://localhost:9200.
To try in more simple environment, I tried on a ubuntu VM on my local laptop, but I have the same issue. Do you have any idea how to solve my problem ?
Below you can see the logs of elstack container :

2017-03-23 11:27:59,587 CRIT Supervisor running as root (no user in config file)
2017-03-23 11:27:59,590 INFO supervisord started with pid 5
2017-03-23 11:28:00,593 INFO spawned: 'nginx' with pid 8
2017-03-23 11:28:00,596 INFO spawned: 'elasticsearch' with pid 9
2017-03-23 11:28:00,606 INFO spawned: 'logstash' with pid 10
2017-03-23 11:28:00,612 INFO spawned: 'kibana' with pid 11
2017-03-23 11:28:01,755 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-03-23 11:28:01,755 INFO success: elasticsearch entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-03-23 11:28:01,755 INFO success: logstash entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Thanks ;)

Can you try these things first? - https://github.com/blacktop/docker-elastic-stack/issues/5#issuecomment-277457913

Hi,
Thanks you for your answer, I tried the explain solution in the issue #5 but still doesn't work... At this time my logs change, see below :
 2017-03-25 08:19:33,771 CRIT Supervisor running as root (no user in config file) 2017-03-25 08:19:33,779 INFO supervisord started with pid 6 2017-03-25 08:19:34,784 INFO spawned: 'nginx' with pid 9 2017-03-25 08:19:34,792 INFO spawned: 'elasticsearch' with pid 10 2017-03-25 08:19:34,797 INFO spawned: 'logstash' with pid 11 2017-03-25 08:19:34,803 INFO spawned: 'kibana' with pid 12 2017-03-25 08:19:35,414 INFO exited: elasticsearch (exit status 1; not expected) 2017-03-25 08:19:36,417 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-03-25 08:19:36,420 INFO spawned: 'elasticsearch' with pid 48 2017-03-25 08:19:36,421 INFO success: logstash entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-03-25 08:19:37,024 INFO exited: elasticsearch (exit status 1; not expected) 2017-03-25 08:19:39,030 INFO spawned: 'elasticsearch' with pid 74 2017-03-25 08:19:39,596 INFO exited: elasticsearch (exit status 1; not expected) 2017-03-25 08:19:39,915 INFO success: kibana entered RUNNING state, process has stayed up for > than 5 seconds (startsecs) 2017-03-25 08:19:42,923 INFO spawned: 'elasticsearch' with pid 131 2017-03-25 08:19:43,470 INFO exited: elasticsearch (exit status 1; not expected) 2017-03-25 08:19:44,473 INFO gave up: elasticsearch entered FATAL state, too many start retries too quickly
I tried to add option command : -e ES_JAVA_OPTS="-Xms1g -Xmx1g"
And increase the memory map areas.
It's weird because I have the same logs in /var/log/elasticsearch.stdout.log as you can see :
`#
There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
An error report file with more information is saved as:
/tmp/hs_err_pid29.log

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
An error report file with more information is saved as:
/tmp/hs_err_pid55.log

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
An error report file with more information is saved as:
/tmp/hs_err_pid81.log

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
An error report file with more information is saved as:
/tmp/hs_err_pid138.log
`
Thanks to help me.

The logs are telling you you don't have enough RAM to run elasticsearch.  I believe you need at least 2GBs.

You're right, I'm trying with just 2go, with an another server (4go) elstack is launching immediately ... Sorry for the disturb and thank you for your time.

you're welcome


Make EKS-A release manifest URL overrideable

Make EKS-A release manifest URL overrideable to make out-of-band release announcements.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm

/override eks-anywhere-e2e-presubmit eks-anywhere-mocks-presubmits eks-anywhere-presubmit

/approve

/cherrypick release-0.15


canbus data length can be less than 8

In general, the can dlc could be any integer between 0 and 8.  This if-statement will filter out the can messages which have less than 8 byte data length.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.yiding seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


State of Windows support

Windows support was scheduled for the 1.2 upgrade. We made significant progress on it but eventually failed finalizing it due to build system obstacles in Windows builds.
Executing Wasm on Windows in a Rust binary

[x] Windows support for cosmwasm-vm including CI testing of the entire cosmwasm-vm test suite
[x] Windows support for libwasmvm including CI testing of the entire libwasmvm test suite

This section shows that Singlepass world well on Windows now.
Creation of shared library (.dll)

[x] Builder support for .dll files (builders version 0013, #368)
[x] CI support for updating .dll files (https://github.com/CosmWasm/wasmvm/commit/b372ac985aef8606e8cb883bdd5ff02260fbe866, deactivated in #390)
[ ] Make .dll build deterministic
[ ] Refactoring to avoid using errno
[ ] wasmd integration with .dll (failing)
[ ] Testing .dll library in Go tests (failing)
[x] Reported bug to Wasmer when Wasm execution aborts in shared libs on Windows

Creation of static library (.lib or .a)

[x] Tested static library build (failing due to linker errors)
[ ] Deside if static builds are worth pursuing (.lib (MSVC toolchain) or .a (GNU toolchain)

No windows support planned for the time being


Names of 'TUL ' and 'TUM ' are swapped

The names for 'TUL ' and 'TUM ' are swapped. 'TUL ' should be “Tulu”. 'TUM ' should be “Tumbuka”.

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

ID: 662c6f54-f90c-52ed-dca2-0f0a0a49fee5
Version Independent ID: 6aa33924-d45e-60c3-a9fd-e317ff662993
Content: Language system tags (OpenType 1.9) - Typography
Content Source: typographydocs/opentype/spec/languagetags.md
Product: typography
GitHub Login: @PeterCon
Microsoft Alias: alib

Wow! That error was introduced in OT 1.8. 'TUL ' is indeed for Tulu, and 'TUM ' is for Tumbuka. Fixing as an erratum in OT 1.9.

Fixed in OT 1.9.


/app/wheels doesn't exist

When running docker build . -t mikroflak i get this error
ERROR: Could not find a version that satisfies the requirement MicroFlack-Common==0.3 (from -r /app/requirements.txt (line 22)) (from versions: none)
ERROR: No matching distribution found for MicroFlack-Common==0.3 (from -r /app/requirements.txt (line 22))
WARNING: Url '/app/wheels' is ignored. It is either a non-existing path or lacks a specific scheme.
The command '/bin/sh -c pip install --find-links /app/wheels -r /app/requirements.txt' returned a non-zero code: 1```

Are you following the tutorial to run this project? It is fairly complex and has a lot of moving parts, the PyCon tutorial video is the ultimate reference.

Unfortunately no  :) I was just browsing your repos and came across messaging app which seems very interesting . Where can i find your PyCon tutorial ?

https://www.youtube.com/watch?v=nrzLdMWTRMM

Thank you, i finished your microblog tutorial and i was crawing for more. Really looking forward for new stuff from you .

Yeah, this tutorial is a very good follow up to the Mega-Tutorial. Enjoy!


Add static dir as default dir for serve css/js/image files used in pr…

add static dir as default dir for serve css/js/image files used in project.

have bug ...


Request for Assistance: Creating a Sticky column TableView with Virtualizer

🙋 Documentation Request
I am reaching out to seek assistance regarding the creation of a tableView with a virtualizer. Specifically, I am aiming to make the first and last columns of the table sticky. After conducting some research, I couldn't find comprehensive documentation on achieving this task.
I am hopeful that you might be able to provide some guidance or examples on how to implement this functionality effectively. Would it be possible for you to share any relevant examples or resources that could help me achieve this?
🧢 Your Company/Team
No response

Are you using RAC or our hooks?

I'm using useTableState hook useTable.
Below is the code snippet provided for your reference.
`const columnLayout = useMemo(
() => new TableColumnLayout({
getDefaultWidth,
getDefaultMinWidth,
}),
[getDefaultWidth, getDefaultMinWidth],
);
const layout = useMemo(() => new TableLayout({
// If props.rowHeight is auto,
// then use estimated heights based on scale, otherwise use fixed heights.
rowHeight: props.overflowMode === 'wrap'
? null
: ROW_HEIGHTS[density][scale],
estimatedRowHeight: props.overflowMode === 'wrap'
? ROW_HEIGHTS[density][scale]
: null,
headingHeight: props.overflowMode === 'wrap'
? null
: DEFAULT_HEADER_HEIGHT[scale],
estimatedHeadingHeight: props.overflowMode === 'wrap'
? DEFAULT_HEADER_HEIGHT[scale]
: null,
columnLayout,
initialCollection: state.collection,
}),
// don't recompute when state.collection changes, only used for initial value
// eslint-disable-next-line react-hooks/exhaustive-deps
[props.overflowMode, scale, density, columnLayout],
);
const { gridProps } = useTable({
...props,
isVirtualized: true,
layout,
onRowAction: onAction,
}, state, domRef);
const [headerMenuOpen, setHeaderMenuOpen] = useState(false);`

Sorry for brevity of the message. I'm on my phone. But since it appears you're using our virtualizer and table layout, you could start by looking at how we did the checkbox column which is sticky at the front

I'm using these links for my references:

https://reactspectrum.blob.core.windows.net/reactspectrum/6e36fa2807d4c01ba3c191f86dc3820e20d57f02/storybook-17/index.html?path=/story/tableview--static&providerSwitcher-express=false&scrolling=true
https://opensource.adobe.com/spectrum-web-components/storybook/?path=/story/table-virtualized--virtualized
https://react-spectrum.adobe.com/react-aria-tailwind-starter/index.html?path=/story/table--example

do you have any other reference, or doc link you can provide for same?

Sticky columns isn't something we support yet. It would require a lot of work. I think you can't have more than one position:sticky column at a time, and the checkbox column already takes that up. So we'd have to change the DOM structure to group the sticky columns together somehow. That's a lot of work and it isn't in our priorities right now. So it might be difficult to get working. You'll need to play around a bit. If you do get it working, please report back so we can learn from your approach!

I am only in the need of one sticky column at a time. I am using the Table and virtualizer in about the same way as the latest react-spectrum.
Sticky columns work fine when returning true in isStickyColumn in TableViewLayout, but only as long as the sticky column is visible in the viewport.
From what i can see in the code, the sticky columns are always supposed to be persisted? Has this been tested in cases where there are too many columns to be visible, and the last column is marked as sticky by isStickyColumn?


more menu cleanup

Codecov Report

Merging #502 into master will increase coverage by 0.08%.
The diff coverage is 98.73%.

@@            Coverage Diff            @@
##           master    #502      +/-   ##
=========================================
+ Coverage   90.41%   90.5%   +0.08%
=========================================
  Files          37      37
  Lines        2826    2800      -26
=========================================
- Hits         2555    2534      -21
+ Misses        271     266       -5

Impacted Files
Coverage Δ

setup.py
0% <ø> (ø)
:arrow_up:

vent/menus/tools.py
98.07% <ø> (ø)

vent/menus/tutorials.py
100% <ø> (ø)

vent/menu.py
80.89% <100%> (-0.42%)
:arrow_down:

vent/menus/tool_forms.py
100% <100%> (ø)

vent/menus/tutorial_forms.py
100% <100%> (ø)

vent/menus/inventory_forms.py
100% <100%> (ø)

vent/menus/inventory.py
96.07% <94.44%> (+6.71%)
:arrow_up:

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 de85ee8...0692eb9. Read the comment docs.


Snapshot not capturing upstreams

currently snapshots only capture APIs, plugins and consumers and i'm trying to take a full backup but my upstreams are missing in the snapshots. I am using konga version 0.8.8 and kong version 0.11.2.
the problem seems to be with a bug where it's trying to check the version but the version is 0.11.x. snapshots are working when snapshot kong version is 0.11.2 or 0.10.4. but it breaks with version 0.11.x.

@borna75rz ,
what version of Kong and Konga are you using?

I am using konga version 0.8.8 and kong version 0.11.2.

@borna75rz, Konga is now in version 0.10.2.
On my end, upstreams+targets apear in my snapshots with no problems, so I can't reproduce that issue.
Please, do upgrade and see if that fixes it.
I would suggest that you upgrade Kong to v0.12.x as well.

thanks a lot! updating konga fixed the issue!

@borna75rz ,
glad to help.
Closing this.


Find my Mouse activates on real PC when hitting Ctrl-A, Ctrl-C etc in Remote Desktop

Microsoft PowerToys version
v0.49.1
Running as admin

[ ] Yes

Area(s) with issue?
Mouse Utilities
Steps to reproduce
With PT active on your main PC, Remote Desktop (mstsc) into another machine (I tried Server 2009 and Windows 11 remotes), in full screen mode; in there, do a double Ctrl-key hit combi such as CTRL-A , CTRL-V or CTRL-C CTRL-V - this will activate Find My Mouse.
✔ Expected Behavior
No activation of find my mouse ;)
❌ Actual Behavior
Find My Mouse activated
Other Software
No response

My guess is that what's happening is that mstsc lets the Ctrl keys through, but steals the A and V. So all that is left for the local system to see is the two Ctrl keys, which happens to be Find My Mouse's activation sequence. Not sure what we can do about this, since the A and V are simply stolen before Find My Mouse can see them.

Maybe changing it (configurable) to be triple-Ctrl instead? Or use the length of the Ctrl-press - I can imagine that the Ctrl-press for  a combo is longer than the taps you'd do to find your mouse?

@jaimecbernardo what's the current maximum delay between ctrl key presses for Find My Mouse? Could this be a setting we could expose for end users to adjust?

Currently the gap between first Ctrl down and second Ctrl down has to be between 1/5th and 1x the system (mouse) doubleclick time, according to the code. Length of the 'depress' duration is not taken into account.
Meaning I've now worked around the problem by setting my double-click speed a bit faster, but still acceptable for me:

I guess having alternative activation methods would be the way to go here.

Ahha, this has been plaguing me for days! I could never quite figure out what I was doing, other than I was 100% not just double-pressing ctrl.
Most commonly happens when I am moving lines around in VSCode; key sequence is something like Ctrl+X Up Ctrl+V.
I had my double-click speed set to 4 ticks from "fast", I've moved it one closer (same as boekabart's screenshot above) but can still reproduce it when I try (hopefully less often in real-world use, though).
I think even at the most simplistic, allowing to select 3 presses required would be enough to mitigate this problem.

I also still encounter the problem once in a while, there really are quite some cases where you use 2 ctrl- combos in quick succession (even unrelated in some cases).

I think even at the most simplistic, allowing to select 3 presses required would be enough to mitigate this problem.

Agree with @gregmac there. Can we make that an option? I've checked the code and I don't think it's completely trivial, but surely doable....
Maintainers, would you accept a pull request adding that option?

@boekabart ,
Sure, adding a setting upping number of control presses to 3 would be an acceptable community PR.
Thank you.


Callbacks stopped outputting anything

System Info
langchain==0.0.161
Python 3.11.2
MacOS 13.3
Who can help?
@agola11
Information

[X] The official example notebooks/scripts
[X] The official documentation

Related Components

[X] Callbacks/Tracing

Reproduction
Model output is not seen any more. Up to langchain 0.0.152, I could see the output with multiple approaches.
This behaviour does not depend on the Llm - I've tried it with Llama, gpt4all and OpenAi.
Example code from https://python.langchain.com/en/latest/modules/models/llms/integrations/gpt4all.html:
from langchain.callbacks import StdOutCallbackHandler
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate

handler = StdOutCallbackHandler()
llm = OpenAI()
prompt = PromptTemplate.from_template("1 + {number} = ")

# First, let's explicitly set the StdOutCallbackHandler in `callbacks`
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
chain.run(number=2)

# Then, let's use the `verbose` flag to achieve the same result
chain = LLMChain(llm=llm, prompt=prompt, verbose=True)
chain.run(number=2)

# Finally, let's use the request `callbacks` to achieve the same result
chain = LLMChain(llm=llm, prompt=prompt)
chain.run(number=2, callbacks=[handler])

Example output:
> Entering new LLMChain chain...
Prompt after formatting:
1 + 2 =

> Finished chain.

> Entering new LLMChain chain...
Prompt after formatting:
1 + 2 =

> Finished chain.

> Entering new LLMChain chain...
Prompt after formatting:
1 + 2 =

> Finished chain.

Expected behavior
I had expected to see the prompt + the model output printed 3 times, as it was with langchain 0.0.152:
1 + 2 = 3

The output is returned from the chain, so everything (except writing the output) is working.
As of the current behaviour, I see no way to print the model output while it is generated. However, this feature is important to me (escpecially for longer outputs). Everything works as expected (i.e. model output printed while generated) if I downgrade langchain to 0.0.152 or 0.0.153, but fails to print anything using 0.0.154 or higher.
Strangely enough, the official documentation shows the same thing as I see on my local: Only the prompt is printed, but not the model output. Which makes me think if I may have misunderstood the usage of callbacks and the verbose flag?!

from langchain.input import get_colored_text

class MyStdOutCallbackHandler(StdOutCallbackHandler):
    def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None:
        texts = "\n".join([" ".join([l.text for l in lst]) for lst in response.generations])
        self.on_text(get_colored_text(texts, "green"))

try this
StdOutCallbackHandler not implement on_llm_end method

I did it by adding a callback handler that extends StdOut/FileCallbackHandler/etc. and overriding on_chain_end() to print the outputs map.

from langchain.input import get_colored_text

class MyStdOutCallbackHandler(StdOutCallbackHandler):
    def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None:
        texts = "\n".join([" ".join([l.text for l in lst]) for lst in response.generations])
        self.on_text(get_colored_text(texts, "green"))

try this
StdOutCallbackHandler not implement on_llm_end method

Hey @liuyuchen0504 , unfortunately this does not work, can you show how you implemented it in your chain/agent?

I did it by adding a callback handler that extends StdOut/FileCallbackHandler/etc. and overriding on_chain_end() to print the outputs map.

Hey @robatwilliams, can you share your solution? My whole project relies on this problem :(

Hi. The solution I already described is the same as the previous poster's, just overriding a different method. I can't share code but it's very small, and as it sounds important for you, it's worth getting a good grip of how & why the solution works.
This is the class https://api.python.langchain.com/en/latest/_modules/langchain/callbacks/stdout.html#StdOutCallbackHandler
This is how to use callbacks https://python.langchain.com/docs/modules/callbacks/

Do you have any solution @vanillechai ?

Hi @vanillechai, I don't know if this is to late but I've run into a similar problem where my callback for on_llm_end wasn't working as well. For me, what have workes was putting the callback handler into the model as well.
Try something like this:
from langchain_core.callbacks import CallbackManager

callback_handler = MyCustomCallbackHandler()

model = OpenAI(
    callback_manager=CallbackManager([callback_handler]),
)

chain = LLMChain(llm=llm, prompt=prompt, callbacks=[callback_handler ])
chain.run(number=2)


Too many modules will be optimized, caching is needed

When I compile my program the modules are optimized first. Unfortunately far too many are optimized. For example PyOpenGL although I import subprocessed. And that leads to the fact that I have to wait half an hour just to optimize all modules.
Solution 1: Nuitka only has to optimize all modules it needs.
Solution 2: Nuitka optimizes them all and stores them in a cache. Then next time only updated modules have to be optimized and saved again and only the needed ones have to be loaded from the cache. This would have the additional advantage that the compilation times are reduced considerably.
What do you think about the solutions?

The second one is the plan, and exists as an issue already. Without it, Nuitka is practically unusable. Sorry for closing this as a duplicate though.

If you haven't started yet, I'd like to get started with the caching system. Can I help you?

I did search a lot now, and shamefully I cannot find it. Many issues for performance mention the topic, but they don't work on solutions.
As far as caching goes, I started with something that #415 would greatly benefit from, namely the writing of used modules to a cache file when doing the demotion. Some modules, which are too large to compile as C code, still take long to compile in Nuitka. And the goal is to do it only once, store it in the cache, and next time we compile, to take the used modules, and create a bytecode module right away with the proper dependencies.
There is pkg_resources which includes a copy of pyparsing for whatever reason. And it won't work without it being there, even if rarely ever used. That module takes time to compile each time. Also standard library could be handled as well with full compilation for one time, and properly analyse dependencies, to find that e.g. sqlite is used or not. There is plenty of benefit from just that level of caching.
If you want to peruse that, the bytecode demotion code pointed to in #415 writes things, and the creation of the module from source code, ought to still let plugins have a go (they might modify it), and then then a bytecode module rather than the compile module.
Getting the caching key right will be a large part of the trick. The sys.path relevant contents is to be scanned, and I think I started that work. As that affects the used modules analysis. The hash of the sourcecode should be used, and of course Python version, etc.
With that being present, it ought to be possible to demote trouble makers, or whole packages from stdlib that you don't use and have things work fast.

If I understand that correctly, we need a cache that contains the .o files of the respective scripts and the hash of the source code. So we can actually save the .o for each script and use the hash (sha1?) Of the source code as the file name.
Nuitka would then only have to ask the cache whether the file is available with a certain hash, and if that applies, for example, link this file with a symlink in the build folder.
Is this a good idea?

When we demote to bytecode, there will be no C code and no object files.
For tools like ccache and clcache it's easy to generate the object file from their cache given the same C code is generated. The generation of code doesn't take long. So we never need to care for object files.
Therefore, if compiled modules were to be cached, what is being output when you use --xml should be stored and read back, and then have code generated from there, which probably doesn't take long. We could also keep the C code, that is true, and maybe even a better idea. The XML would be more flexible, but the C code has been made independent of other files, so it could in fact be cached instead. But then we need something that is akin to a compiled module, and provides the C source code for compilation (and thus the object file through that other level of caching). But that won't have nodes attached at all.
That approach would limit what plugins can do. I was always thinking, modules should be allowed to also query the node tree of the code in Nuitka. But maybe that's something that would have to be part of the caching key, what input plugins that access the module used. So that wouldn't really be a problem.
I think you made me realize, that I don't need to store and read back XML at all.
Alongside the C code, much like for bytecode demoted stuff, we need to store the used modules of said module, and potentially other things it derives from the code.
Seems like something that is a lot more simple. The hard part about storing and reading back node trees for XML is to get it right such that nothing changed. The hart part about caching is to know if there is not a new plugin that would want to modify the source code, and for it to have the chance. But that's much easier.

I you can, you ought to start by making the bytecode demotes modules using the information written to the cache already. It should be at least in the current develop version at least. It writes the names of modules only. And it might not have a good key yet, and it's not used to load. That would be a simple change, and start the caching. And later we expand it to ones that are not demoted to bytecode as well by caching the generated C source code too.
In an ideal world, that should allow semi-instant re-compile of even largest programs. Very interesting!

How can I best test the demoteCompiledModuleToBytecode function? The following case will not happen.
        if (             module.isCompiledPythonModule()             and module.getCompilationMode() == "bytecode"         ):             demoteCompiledModuleToBytecode(module)

You want your options to influence nuitka.tree.Bulding function decideCompilationMode, where this happens. Plugins currently are the only ones to make this happen, but you were to add command line options for it I guess. The top level module cannot be bytecode, but you can hard code things there, although I bet, there might be cases, where plugins need their stuff to be compiled as well, so a global change might not work well.

I'm having problems following them right now... :(
Can you maybe explain in steps what needs to be done? I would be very grateful.

I wanted to output things for debugging purposes in the optimize function with optimization_logger.info. However, it does not output anything. Nuitka doesn't even notice if I write logger wrong. Can you please tell me what I am doing wrong?

When loading the module, we can do that.
            result = CompiledPythonModule(
                module_name=module_name,
                is_top=is_top,
                mode=decideCompilationMode(is_top, module_name, source_ref),
                future_spec=None,
                source_ref=source_ref,
            )

Right here, the decided compilation mode is not used immediately. It is after the module is optimized fully, that it will be demoted to a UncompiledPythonModule which then is going to lead to including the bytecode only. It then has the used modules attached, so we can recurse into those in optimization passes and code generation. They might not be bytecode of course, and need other modules.
If mode was looked at there, and used as a decider to create the compiled or uncompiled module, and the later from cache immediately, then it would not go through optimization as compiled again, once it has been successfully demoted and its used modules are known.

I have now modified the demoteCompiledModuleToBytecode function so that the bytecode is also saved and loaded. Unfortunately I get an error when executing the executeable
EOFError: EOF read where object expected
Before I tried to load everything worked.
Here the complete BytecodeDemotion.py (Does not work to paste it as code):
import hashlib
import marshal
import os
from nuitka import Options
from nuitka.importing.ImportCache import (
isImportedModuleByName,
replaceImportedModule,
)
from nuitka.importing.Importing import getPackageSearchPath, isPackageDir
from nuitka.ModuleRegistry import replaceRootModule
from nuitka.nodes.ModuleNodes import makeUncompiledPythonModule
from nuitka.plugins.Plugins import Plugins
from nuitka.Tracing import inclusion_logger
from nuitka.utils.AppDirs import getCacheDir
from nuitka.utils.FileOperations import listDir, makePath
from nuitka.utils.Importing import getAllModuleSuffixes
def getModuleImportableFilesHash(full_name):
package_name = full_name.getPackageName()
paths = getPackageSearchPath(None)

if package_name is not None:
    paths += getPackageSearchPath(package_name)

all_suffixes = getAllModuleSuffixes()

result_hash = hashlib.md5()

for count, path in enumerate(paths):
    if not os.path.isdir(path):
        continue

    for fullname, filename in listDir(path):
        if isPackageDir(fullname) or filename.endswith(all_suffixes):
            entry = "%s:%s" % (count, filename)

            if str is not bytes:
                entry = entry.encode("utf8")

            result_hash.update(entry)

return result_hash.hexdigest()

def _getCacheFilename(full_name, module_importables_hash, extension):
module_cache_dir = os.path.join(getCacheDir(), "module-imports-cache")
makePath(module_cache_dir)
return os.path.join(
    module_cache_dir, "%s-%s.%s" % (full_name.asString(), module_importables_hash, extension)
)

def _loadBytecodeFromCache(cache_filename):
with open(cache_filename, "rb") as bytecode_cache_file:
return bytecode_cache_file.read()
def demoteCompiledModuleToBytecode(module):
"""Demote a compiled module to uncompiled (bytecode)."""
full_name = module.getFullName()
filename = module.getCompileTimeFilename()

if Options.isShowProgress():
    inclusion_logger.info(
        "Demoting module %r to bytecode from %r." % (full_name, filename)
    )

module_importables_hash = getModuleImportableFilesHash(full_name)
if os.path.exists(_getCacheFilename(full_name, module_importables_hash, "txt")):
    inclusion_logger.info("The module %r is already demoted" % (full_name))
    already_demoted = True

else:
    already_demoted = False
    source_code = module.getSourceCode()

    # Second chance for plugins to modify source code just before turning it
    # to bytecode.
    source_code = Plugins.onFrozenModuleSourceCode(
        module_name=full_name, is_package=False, source_code=source_code
    )

    bytecode = compile(source_code, filename, "exec", dont_inherit=True)

    bytecode = Plugins.onFrozenModuleBytecode(
        module_name=full_name, is_package=False, bytecode=bytecode
    )

uncompiled_module = makeUncompiledPythonModule(
    module_name=full_name,
    filename=filename,
    bytecode=marshal.dumps(bytecode) if not already_demoted else _loadBytecodeFromCache(_getCacheFilename(full_name, module_importables_hash, "dat")),
    is_package=module.isCompiledPythonPackage(),
    user_provided=True,
    technical=False,
)

used_modules = module.getUsedModules()
print(used_modules)
uncompiled_module.setUsedModules(used_modules)
module.finalize()

if isImportedModuleByName(full_name):
    replaceImportedModule(old=module, new=uncompiled_module)
replaceRootModule(old=module, new=uncompiled_module)

from nuitka.plugins.PluginBase import isTriggerModule, replaceTriggerModule

if isTriggerModule(module):
    replaceTriggerModule(old=module, new=uncompiled_module)

if not already_demoted:
    with open(_getCacheFilename(full_name, module_importables_hash, "txt"), "w") as modules_cache_file:
        for module_name, _filename in used_modules:
            modules_cache_file.write(module_name.asString() + "\n")

    with open(_getCacheFilename(full_name, module_importables_hash, "dat"), "wb") as bytecode_cache_file:
        bytecode_cache_file.write(marshal.dumps(bytecode))

I have succeeded in getting the bytecode cached, and loaded if it is already in the cache. What comes next?
For info, I have manipulated the decideCompilationMode so that the result is always "bytecode".

Adding an option that matches module names that controls it would be nice, something similar to this, the function from modules should lead you down to where the option is to be added.
    any_case, reason = module_name.matchesToShellPatterns(
        patterns=Options.getShallFollowModules()
    )

The first is a boolean, the second is nice text for tracing. You code would then be equivalent to * as pattern.
I think if you import pkg_resources.extern you are guarantueed to have a module that is affected without the option, I think pkg_resources.extern.pyparsing will be very worth while this treatment. Pyparsing is big and used by nearly all programs, since nearly every library somehow uses pkg_resources in some form, and that won't work without its inline copies.
With that, and even without that, feel free to make a pull request.

Why is the key not the content of the module, but the names of the python files and folders in the same folder as the module? So the cached becomes invalid with every other working folder.

The optimization is going rely on module presence really soon.
Imagine this:
try:
   import PySide2 as Qt
except ImportError:
   import PyQt5 as Qt

At the point, bytecode demotion is done, this could be statically optimized already. I will admit that right now it makes no difference, but I think for standalone mode, it's stupid to go through __import__ built-in and catch exceptions, etc. and soon the code will just know that PyQt5 is not installed, and not list it as a dependency as a result.
The key side of things is something that I will certainly work harder on. Global optimization, which is what this is that I am talking about, could be cached as well as local only. For now, feel free to disable it (make it dependent on a parameter) for now, if it annoys you. But the next level, e.g. using values from imported modules, inlining functions to find out, that some code path is not taken, might result in not including modules, that appear used early on.
I have to admit, this is nothing I have designed too clearly yet.

Need to at least extract the value from the discussion at some point.

我现在确实搜索了很多，但遗憾的是我找不到它。很多性能问题都提到了这个话题，但是并没有解决方案。
就缓存而言，我从#415受益匪浅的事情开始，即在降级时将使用过的模块写入缓存文件。有些模块太大而无法编译为 C 代码，但在 Nuitka 中编译仍然需要很长时间。我们的目标是只执行一次，将其存储在缓存中，下次编译时，获取使用的模块，并立即创建具有适当依赖项的字节码模块。
无论出于何种原因，其中pkg_resources都包含 pyparsing 的副本。如果没有它，它就无法工作，即使很少使用。该模块每次都需要时间来编译。标准库也可以通过一次完整编译来处理，并正确分析依赖关系，以发现例如 sqlite 是否被使用。这种级别的缓存有很多好处。
如果你想仔细阅读，#415中指出的字节码降级代码会写入内容，并且从源代码创建模块，应该仍然让插件可以尝试（他们可能会修改它），然后是字节码模块而不是编译模块。
正确获取缓存密钥将是技巧的很大一部分。相关sys.path内容要扫描，我想我就开始了这项工作。因为这会影响所使用的模块分析。应该使用源代码的哈希，当然还有Python版本等。
有了它，应该可以降级麻烦制造者，或者从 stdlib 中降级您不使用的整个软件包，并让事情快速运行。

Traceback (most recent call last):
File "F:\nongchao\o\MAIN~1.DIS\main.py", line 4, in
File "F:\nongchao\o\MAIN~1.DIS\zk.py", line 1, in
File "F:\nongchao\o\main.dist\sqlite3_init_.py", line 57, in
from sqlite3.dbapi2 import *
File "F:\nongchao\o\main.dist\sqlite3\dbapi2.py", line 27, in
from _sqlite3 import *
ImportError: DLL load failed while importing _sqlite3: 找不到指定的模块。
I encountered this issue while compiling. Is there a way to solve it?

我现在确实搜索了很多，但遗憾的是我找不到它。很多性能问题都提到了这个话题，但是并没有解决方案。
就缓存而言，我从#415受益匪浅的事情开始，即在降级时将使用过的模块写入缓存文件。有些模块太大而无法编译为 C 代码，但在 Nuitka 中编译仍然需要很长时间。我们的目标是只执行一次，将其存储在缓存中，下次编译时，获取使用的模块，并立即创建具有适当依赖项的字节码模块。
无论出于何种原因，其中pkg_resources都包含 pyparsing 的副本。如果没有它，它就无法工作，即使很少使用。该模块每次都需要时间来编译。标准库也可以通过一次完整编译来处理，并正确分析依赖关系，以发现例如 sqlite 是否被使用。这种级别的缓存有很多好处。
如果你想仔细阅读，#415中指出的字节码降级代码会写入内容，并且从源代码创建模块，应该仍然让插件可以尝试（他们可能会修改它），然后是字节码模块而不是编译模块。
正确获取缓存密钥将是技巧的很大一部分。相关sys.path内容要扫描，我想我就开始了这项工作。因为这会影响所使用的模块分析。应该使用源代码的哈希，当然还有Python版本等。
有了它，应该可以降级麻烦制造者，或者从 stdlib 中降级您不使用的整个软件包，并让事情快速运行。

Traceback (most recent call last): File "F:\nongchao\o\MAIN~1.DIS\main.py", line 4, in File "F:\nongchao\o\MAIN~1.DIS\zk.py", line 1, in File "F:\nongchao\o\main.dist\sqlite3__init__.py", line 57, in from sqlite3.dbapi2 import * File "F:\nongchao\o\main.dist\sqlite3\dbapi2.py", line 27, in from _sqlite3 import * ImportError: DLL load failed while importing _sqlite3: 找不到指定的模块。
I encountered this issue while compiling. Is there a way to solve it?

open an new issue rather than commenting on a separate issue.

All of this is implemented by now. The bytecode cache is influenced by plugins that took effect and their inputs, presence modules affects caching too, for the actual XML storage of the --xml output and reading a module back from this, there is nothing in here, so we don't need this issue anyymore.


Mobile testing

this is a forever ongoing thing, going to close it.  can open more specific items if needed


bruno - problem opening api collections

using Ubuntu Ubuntu 23.10 and installed bruno via snap
( bruno snap install )
$ snap list bruno
Name   Version  Rev  Tracking       Publisher   Notes
bruno  1.12.3   31   latest/stable  helloanoop  -
start up bruno with no issues - initially all appears to be well.
when i go to open a collection things start to look strange.
any help greatly appreciated,
thanks dave

This seems to be a duplicate of #1437

agreed - my apologies - I did not see that other ticket.
( not sure what the process is for closing this duplicate ticket is ...
thanks dave.


Is it possible to add extra params that are passed to the code executed

Sometimes we need to pass some extra command line params to code executed.
As of now we have:

nodeOptions
mochaOptions
istanbulOptions

none of them helps to achieve this goal.
Correct me if I'm wrong, but there's no possibility to add parameters at the and of args passed for execution. In other words, one cannot achieve something like this:
node_modules/istanbul/lib/cli.js cover --dir <some-dir>  /node_modules/mocha/bin/_mocha -- target/test/specs/**/*.spec.js --some-extra-param
If I'm wrong and it's possible I'll be very much obliged if you'll show how it can be done.
If it is not, I suggest to add extraOptions (or whatever it will be named).
I can contribute.

what is the use case that a combination of the 3 options doesn't cover? --some-extra-param wouldn't work in any case, even outside this plugin, mocha would 'swallow' it, even if you execute it in your command line.
when running tests, you won't actually run your files, if you need to change behavior inside your program, use environment variables. unless your project is a command line application, then you'll need to manually fill the process.argv

My use case is pretty much following, I have a bunyan logger which is initialized like this
const log = bunyan.createLogger({
  name: 'app',
  streams: [
    {
      level: argv['log-level'] || 'trace',
      stream: ...
    }
  ]
});

This logger is used throughout the whole codebase.
If I won't have an opportunity to pass command line param to the application itself
life is getting a bit more complicating than it seems it can be. I'm not sure that manually filling process.argv (what I've never tried to do to be honest) is a better way.

you could do that to use an environment variable like process.env['LOG_LEVEL'] || true. process.argv is an array, so that wouldn't work the way you have it in your code.

OK, thank you for the response, I've forked project and added extraParams options, sometimes it's just something you need. Well, I need. I'm aware of workarounds as well of limitations but I clearly can see when this is needed.

alright!


Codespaces F5 experience

Description:

The F5 experience for Codespaces has errors.

Need to update .devcontainer for a good VS Code Developer Experience

References retaildevcrews/helium#396

Updated the  .devcontainer with VSCode extensions from @jofultz. Compared them with vscode extensions from mac.
Steps done to test:

Created a new codespace, with helium-java github repo and tested with the updated .devcontainer.
Set KEVAULT_NAME and AUTH_TYPE environment on Codespaces terminal
Run helium-java either from maven IDE or from command line.
App starts clean with no errors

Closed this as part of PR https://github.com/retaildevcrews/helium-java/pull/259


Adding inputView(UIPickerView) to TextFiled causing application crash

Assigned input view in viewdidload.
textfield.inputView = pickerView
App is crashing on begin editing
func textFieldDidBeginEditing(_ textField: UITextField) {
}

Hey @vijayasaiatyam do you have a more details on this, maybe a stacktrace?


Some videos never gets converted

Describe the bug
This issue is very closely related to #63 and #112. Some videos are never uploaded and it seems to happen every now and again. I had about 34 missing videos out of 275. So checking the DynamoDB i can see 8 records there with errors stating: 'NoneType' object is not subscriptable. So I checked the video-handler-mediainfo logs and this is coming from the same request:
REQUEST::
{
    "guid": "1b83d278-a04a-41a8-bf66-45eb09b8dbac",
    "startTime": "2022-03-29T11:47:50.529Z",
    "workflowTrigger": "Video",
    "workflowStatus": "Ingest",
    "workflowName": "video-handler",
    "srcBucket": "video-handler-source-19v0bm1qoew3",
    "destBucket": "video-handler-destination-1b10ff20uuw1m",
    "cloudFront": "d28axzmtx0njxj.cloudfront.net",
    "frameCapture": true,
    "archiveSource": "DISABLED",
    "jobTemplate_2160p": "video-handler_Ott_2160p_Avc_Aac_16x9_mvod_no_preset",
    "jobTemplate_1080p": "video-handler_Ott_1080p_Avc_Aac_16x9_mvod_no_preset",
    "jobTemplate_720p": "video-handler_Ott_720p_Avc_Aac_16x9_mvod_no_preset",
    "inputRotate": "AUTO",
    "acceleratedTranscoding": "PREFERRED",
    "enableSns": true,
    "enableSqs": true,
    "srcVideo": "8277e418-ae04-477b-900a-c3d243ecb952.mp4",
    "enableMediaPackage": true
}

E: https://video-handler-source-xxxx.s3.eu-central-1.amazonaws.com/8277e418-ae04-477b-900a-c3d243ecb952.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAXWVBGDCP6KZXMSXU%2F20220329%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20220329T114753Z&X-Amz-Expires=7200&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEwaDGV1LWNlbnRyYWwtMSJHMEUCIGvxCl9O42cIF%2FPv%2BE81%2ByamNo737J2VIWBQG8KXAehkAiEA6nUxs0%2BpLJSZ77N%2BIa%2BAM%2FcrGRh9OoTIsLcM6d7Z8g0qpQII1f%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw1Mjk2OTI3NjAyMjMiDGah8XhHueF0NRFNKSr5AUasGG6vbhzob9tsbQUUEDWVa3Na8oS%2B7i%2Bq%2FJqLctpMbmQAxIimQHt2Q%2FCnZUHLucEIEYhDAhvoEC5RQmOvtk0EUR%2Fpc8q2K032qgox8GfSKFuDFL680RDDB9XMgrHM3nlZacdFde5BBmHkNamJ%2F0JjJ%2B5t9PljvUHSPTs3mcQymANdLPwiUOkvgNZ5ZGTmsRDIBAeXjMkyWygwymKnbDRrhhvZ%2BA32h3pgxkWtHjq6kM20gnydS4RC7NY53GNp19WzjgwR1dIuezhWL1MHBNOUhN4sUm7I1%2Bt8LOpYBgu4odyiuf4dDqfo%2FFjKAZ0YAP7kByNyzQsTiDDm44uSBjqaAXxF4%2B08DjRKNr5HMdYd7Ae%2BE35thEisF2LlHDWHadl8fA2Cs2PVsOuxx%2BmgV4wwhQfIrS3bKkoDkBaAxxxSuTwD800GuogMQHRPVeKtwchQw9JZTKWz%2BzHahSd9P9DSrV44UPaFZ1hZTOaC7C3lhGmPlBkYbado2wqqKWV%2B7klh4FkPLM%2Ba7PoLMSPEjt5oLb8nLXYXvdY03g4%3D&X-Amz-Signature=a4fa7ebfed0aa7937fb699dcf7d292faaff6f996f62ea5d0f5bb517a812f45c0, <?xml version="1.0" encoding="UTF-8"?>

<Error>AccessDenied<Message>Access Denied</Message><RequestId>M7MR1JDRABEAW69E</RequestId><HostId>6fBMUOBvXfBXVPWMIIFbN8cURjLvTLUEf2pZMDoOc+8qcbOrf80AISilXtrVx4GQqcpF7ynfsSI=</HostId></Error>

MEDIAINFO OUTPUT::
{
    "media": null
}

[ERROR] TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 166, in lambda_handler
    raise err
  File "/var/task/lambda_function.py", line 133, in lambda_handler
    tracks = json_content['media']['track']

So I checked my source bucket to see if the file was there, but it wasn't. This was the case for at least 4 files, didn't check all. But I would assume the 8 entries in the DynamoDB was the same reason.
The weird thing is that all of the files I upload, I save in a MySQL DB and there is no entry matching 8277e418-ae04-477b-900a-c3d243ecb952.mp4. However, if I start from the DB and look up the non-converted entries, I see that those files DO exist in the source bucket.
To Reproduce
It occurs randomly
Expected behavior
I expect all videos to go through the handler successfully, or at least with an error.

One solution that would work for me would to be force-trigger a conversion of a video that was never converted. How would I go about that?

Okay so I just tried uploading a video which "disappeared" and then I uploaded the exact same video minutes later and it worked. So when I say it "disappears" it means there is no trace of it in the DynamoDB. However, I was looking at the logs at the same time as I was uploading the video and saw that it actually was converted successfully. It seems something went wrong with the DB insert.
I have attached the CSV containing the logs regarding the first upload.
logs-insights-results (1).csv

Thanks for your feedback. Can you please confirm if you are still experiencing this issue and the exact version that you are running - is it the latest v6.1.3?


Automate updating JetBrains products

We currently get a trickle of PRs on each JetBrains product whenever somebody feels like updating the thing they use. They release fairly often, so it would be nice to write some automation for this process.
JetBrains pointed me to an XML URL which seems to tell what the latest build number of each product is:
https://www.jetbrains.com/updates/updates.xml
On the downloads pages they also provide sha256 checksums, which will come in handy.

What would the policy for such updates?

Update nixpkgs as soon as new version is released?
Update to the latest versions on, say, Mondays?
Update to the version which are out there at least a week to let early adopters step into oops-issues (like one we recently had with scala-2.11.9)?
???

@volth I imagine master would be updated just whenever somebody feels like running the script. Are you asking what the policy would be for backporting into releases?

you are right, since we have the unstable branch, it is not so important.

I tried to automate it yesterday (to make https://github.com/NixOS/nixpkgs/pull/26753 ), it is not easy: the xml file has no direct download links, only links to dowload page, which has links only to EAP (unstable) versions of the products. To get download links to *.tar.gz and *.tar.gz.sha256 of stable products, one more html to be parsed.
They could change layout of the website prior to we run the script next time :(

The download urls are stable and could be hard-coded for sake of simplicity. Therefore only having the version should.

Is also back-ported most of the updates back to stable (minor-releases).


Supersize text

To Reproduce
right click into the title field

lol

1.1.2-RC1
on linux too
but i can find normal ones too. the Password field is ok for example:

it seems that dues to the dfference in font 2em on the text field are different font size then for the context menu


Allow fixed configuration for some fields

clicintattr.trig has the following note:

Some implementations may want to save these bits so only certain trigger types are supported. In this case, these bits become hard-wired to fixed values (WARL).

To me it is not clear if similar behavior is allowed for other config bits. I think we need to allow this. In particular, I think it should be allowed to fix ie, clicintattr.ie, and clicintattr.mode to certain values.

from the priv spec:

Some read/write CSR fields are only defined for a subset of bit encodings, but allow any value to be
written while guaranteeing to return a legal value whenever read. Assuming that writing the CSR
has no other side effects, the range of supported values can be determined by attempting to write
a desired setting then reading to see if the value was retained. These fields are labeled WARL in
the register descriptions.

My understanding is that any register defined as WARL can be allowed to be hard-wired to fixed values.  The clic spec currently lists clicintctl and clicintattr as 8-bit WARL fields.
There is also this statement in the CLIC spec for when interrupts aren't implemented:

If an input i is not present in the hardware, the corresponding clicintip[i], clicintie[i], clicintattr[i], clicintctl[i] locations appear hardwired to zero.

Is that sufficient or are you asking if we should have the CLIC spec to allow clicintie for some interrupts to be hardwired to 1, i.e., add a statement that clicintie field is also WARL.

@christian-herber-nxp, no problem adding a note for the other WARL fields in clicintctl/clicintattr.  You mentioned clicintattr.ie earlier.  that's not a clicintattr field.  did you mean clicintie which is not currently defined as WARL?

yes, in that case I think it should be WARL.
In case an interrupt is not implemented, I recall there was a text that it would be read-only zero.

closed by pull #390.


Create whos-gonna-poop

Whos Gonna Poop is a plugin that highlights the orbs and player models of whoever is next to poop in Kephri in Tombs of Amascut.

This isn't allowed per Jagex's Third Party Client Guidelines:

Adds additional visual or audio indicators of a boss mechanic except in cases where this is a manually triggered external helper.

This isn't allowed per Jagex's Third Party Client Guidelines:

Adds additional visual or audio indicators of a boss mechanic except in cases where this is a manually triggered external helper.

Would it be allowed if the indicators were swapped manually with a button each time flies occurred?

Indicators of what? If it was indicators around the orbs only, that would be fine, as that would be mostly on par with something like the zulrah plugin, having a hotkey to advance the phase displayed, but not having any ingame overlays.

@Nightfirecat Okay, Ill adjust it to only show the orb highlights, and require a hotkey/button click to advance.

@Nightfirecat This has been updated to conform to the rules by requiring a hotkey to advance the orb positions during the fight, and removing the overlay highlights on the players.

@Nightfirecat It was left in unintentionally from a previous branch. It's been removed! Thanks.


Windows binary package missing openblas .lib file

The instructions to build a ".lib" file requires a ".def" file. The def file requires the user to download the source and have (among many other things) a working Perl installation and more. It would be very convenient for the users if the lib file was shipped together with the dll and header files.
EDIT: This used to be the case, as in OpenBLAS v0.2.8 from 2013 which included:
libopenblas.a
libopenblas.def
libopenblas.dll
libopenblas.exp
libopenblas.lib

Thank you for the suggestion.

I am trying to get get the binary package from NuGet (i.e., https://www.nuget.org/packages/OpenBLAS). However, only a libopenblas.dll.a. I need the .lib file in the linking process. Any clue if and where I might be able to find it? I don't have a toolchain setup to build from source... Thanks.

That binary on NuGet is seriously outdated, could you please try if the attached package works for you ? (it is not exactly current either, this happens to be the result of a cross-compilation test
that I did on a Linux system a while ago, and already had the .def file that is needed by lib.exe to
create the .lib. If this works, I'll see if I can get the OpenBLAS uploads to sf.net updated again)
openblas035.zip

Hei Martin, thank you very much for taking the time to answer and for the binaries. I can confirm that I can link them with Microsoft (R) C/C++ Optimizing Compiler Version 19.15.26730 for x86. Do you happen to also have the x64 binary?
By the way, it would be great if you could update the https://sf.net repository with more recent binaries. Sorry for asking this if you, but I personally don't have the technical knowledge to compile it myself from source. However, I rely heavily on this project for my research and I appreciate the amazing work you guys are doing!

Sorry, actually did not realize that it was a 32bit lib I had lying around. Will update my cross-compilation to x64 and upload a 64bit of 0.3.6 later today or tomorrow...

Many thanks! I look forward to it!

OK, next attempt. Hope this is actually usable:
openblas036-win64.zip

Will check it right now and report back!

I have uploaded the win64 build of 0.3.7 and a rebuilt package of 0.3.6 to the github releases page now, will ask xianyi to upload them to his openblas project account on sf.net as well.
(I decided to rebuild 0.3.6 as my previous attempt had Haswell as minimum target by mistake. Both new packages are still DYNAMIC_ARCH and  now use TARGET=CORE2 for the common functions)

Closing as the new 0.3.6 and 0.3.7 packages are now on the sourceforge page as well.

Got error forrtl: severe (157): Program Exception - access violation when run the app with libopenblas.dll.a produced. both from linux gcc-mingw-w64-gcc and mingw64 souceforge gcc-mingw-w64-gcc
ifort /I"D:\win\test_fpu\Openblas2" test_fpu2.f90 libopenblas.dll.a  /link /stack:64000000


Runtime error when passing class attribute from Html package.

When attempting to add a class name to an SVG element using class from the elm-lang/html package the compiler doesn't complain. When running the compiled program an error is thrown:
Uncaught TypeError: Cannot set property className of #<SVGElement> which has only a getter

It's a stupid mistake, but still, when working with some SVG content nested in an HTML view it's not unlikely to happen.
Below is a sample program that produces the error.
module Main exposing (..)

import Html.App as Html
import Svg exposing (..)
import Html.Attributes exposing (class)

view : () -> Svg Never
view model =
    svg []
        [ g [ class "html-class" ]
            []
        ]

main : Program Never
main =
    Html.beginnerProgram { model = (), view = view, update = \_ _ -> () }

Happened to me as well.

I had the same problem.
@evancz Why class functions from Html and Svg modules have incompatible implementations?
-- From Html.Attributes
-- className property can't be used for svg nodes
class value =
  VirtualDom.property "className" (Json.string value)

-- From Svg.Attributes
class value =
  VirtualDom.attribute "class" value

SVG does not have JS properties. You can not use properties for anything.
I am just curious why people are mixing and matching between these libraries.

In my case I wasn't intentionally mixing them so once I figured out what went wrong it was easy to fix. Still, it would have been nice if the compiler would have warned me for my stupidity.

I pretty often use inline SVGs in my HTML and I can add class attribute to almost any element including SVG:
<div class="house">
  <svg class="dog">
    <path d="" />
  </svg>
</div>

So when I first time tried Elm, my intuition failed:
div [ class "house" ]
    [ svg [ class "dog", svgContent "<path d='' />" ] []
    ]

svgContent content =
    property "innerHTML" (Json.Encode.string content)

The compiler didn't tell me anything about it. So I got Uncaught TypeError: Cannot set property className... runtime exception. It's totally my fault coming from my wrong expectations and previous experience.
BTW, if Html.class implementation would also use VirtualDom.attribute "class" value approach, it would prevent the problem for other newcomers. I guess it relies on the className property for performance?

I ran into this problem because I was using inline SVGs. Easy mistake to make any time you're using inline SVGs. Took some digging to realize what I was doing wrong.

I am using inline SVGs a lot a also. I am really don't like this runtime exception since only because of this I am checking every page of my Elm project for this issue (and there still possible runtime issues when state changes for example).
The most bad thing is that elm compiler allowing to pass Html.Attributes.class to functions with definition like this: icon : String -> List (Svg.Attribute msg) -> Svg msg

I think the issue is that both Svg.Attribute msg and Html.Attribute msg are type aliases, which don't enforce strong typing. Don't see an easy solution, without breaking changes. It would be good if elm had something like type alias that enforced strong typing (could use a type with a single variant but it's a bit messy).

I just ran into this exact issue today, didn't take long to figure out but still confused because I got a runtime error instead of a compiler error.

I've just ran into the same issue.
Accidentally used Html.Attribute.class instead of TypedSvg.Attributes.class.
Yes, it caused a runtime error which was surprising and somewhat disappointing.  People are running into this, see the referenced tickets. I also arrived here from such a ticket.
I would suggest going ahead with a breaking change to ensure type safety.

Just wanted to leave here that the same thing happened to me, took me a while to figure out that I had my imports messed up.
I feel like since these types are not compatible, the code shouldn't have compiled (or maybe give a warning). It's a bit sad to see that people have had this issue for 3,5 years now.

Hello from 2020 (what a great year!), I've just spent over an hour wondering why my page fails unexpectedly (and actually goes into infinite loop of updateIfNeeded), just because I accidentally imported Html.Attributes.class instead of Svg.Attributes.class which the compiler happily accepted :-(
I got used so much to Elm's "If it compiles it just works" so I was quite taken aback by this. Not sure which is the correct place to push for fix, whether here or at the elm/compiler but I guess this should really get fixed. Seems like I'm not the only one who stumbled upon this...

Greetings from 2022 :wave:
This bit us as well. Interestingly, this did not cause a fatal runtime error during the development build with the --debug flag on, and only error-ed out for the production build, which made it significantly more nasty for us

I'm not even using Elm anymore. I guess the ecosystem has just stalled due to the Elm 0.19 release fiasco. These issues may never be fixed.


Clarify that LightmapGI is not supported in compatibility renderer

The documentation currently does not mention that LightmapGI rendering is not supported in the compatibility renderer. It only states the fact that baking it is not supported (thus it is possible to make an assumption that rendering it is supported, while baking isn't).
I'd originally wanted to reply in https://github.com/godotengine/godot/issues/75726#issuecomment-1499752607 but appening this to documentation seemed fairly easy to do myself.

LightmapGI rendering does work with the compatibility renderer - this was added in PR https://github.com/godotengine/godot/pull/85120

LightmapGI rendering does work with the compatibility renderer - this was added in PR #85120
EDIT: Although, I guess that is only 4.3+, which, of course, isn't released yet. If we're only targeting the docs for 4.2 and below, then it's true that it isn't supported in those versions.

And baking also works since 4.3+ too, the host system just needs to be able to run Vulkan at the moment. I feel the documentation should reflect the current state of the feature.

Pretend I retracted my approval until the documentation is changed accordingly.
Unless this PR is allowed to _specifically target 4.2 but that would be a major, major exception.

Yeah upon looking at the history, this would seem to overwrite what efb1cbaad40b910dbb39d35c896bbe27cb782e49 does, which is Clay adding specifically that the feature currently works if you can run a Vulkan renderer even while in compatibility mode.

It would still be nice if this was at least in 4.2.2, if possible. Which I think is still yet to have a release and will not have LightmapGI.

It would still be nice if this was at least in 4.2.2, if possible. Which I think is still yet to have a release and will not have LightmapGI.

In this case, you need to open a PR against the 4.2 branch as the statement will only be true for 4.2.x, not 4.3.


adding windows quad support

Adding quad build of SLEEF for windows (missed in #9 )

@conda-forge-admin, please add bot automerge

LGTM, merging. Thanks @SwayamInSync !

Any idea how much time it takes to get available through conda-forge channel?

Any idea how much time it takes to get available through conda-forge channel?

In my experience it usually takes something like a couple of hours or so after the CI of the feedstock on the main branch has concluded.