Refactor Type Checking Syntax

As discussed earlier, I refactored the syntax for some isinstance() calls.

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (0d97ded) 100.00% compared to head (5e8a1bc) 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff            @@
##            master       #92   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            5         5
  Lines          376       376
=========================================
  Hits           376       376

Impacted Files
Coverage Δ

src/objprint/objprint.py
100.00% <100.00%> (ø)

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


WIP [DUOS-489][risk=no] Refactor Find Chairperson Logic

WIP
Addresses
https://broadinstitute.atlassian.net/browse/DUOS-489
Changes

Remove any extraneous uses of the dao call to find the first chairperson user.
Rewrite as much logic as possible to look at all chairs for an election as opposed to the single chair for an election.
More tests

Coverage decreased (-0.3%) to 59.929% when pulling 20ef706b1cb0a9d36585736630790e7397d5113e on DUOS-489 into ab318a523e60ae61c41740fe778ac3cd894604e6 on develop.


Websocket location.host

Hey
Thanks for making yolo, it's going to be super productive for my workflow - such great work!
To get yolo working for my use case, however, I've needed to adapt the javascript in yolo.go, line 95:
var conn = new WebSocket("ws://" + (addr[0] == ":" ? "localhost" + addr : addr) + "/socket");

// adapted to...

var conn = new WebSocket("ws://"  + location.host + "/socket");

Using 'location.host' works for me because I'm building the go code in a docker container where the internal hostname is <IP_ADDRESS>:8080 but the port is mapped to another port (ie: http://localhost:6080)
So the original code was trying to make the websocket connect to ws://<IP_ADDRESS>:8080/socket and therefore it wasn't connecting because the page in the browser url is http://localhost:6080. If that makes sense. 'location.host' is just connecting back to the hostname in the browser so it works in a lot of use cases.
Best wishes

I somewhat got what you mean, but will need your help to create a patch for this. You can send me a PR.

The change is committed to my fork (line 97):
https://github.com/digibake/yolo/blob/master/yolo.go
I would make a pull request, but I also had to change the relative import path of that file on line 8 to
"github.com/digibake/yolo/src"
and I'm not familiar enough with golang yet, I guess that might cause a problem if you pulled it?

Yes, we can not merge that :) Why don't you send the PR pointing to this repo ? Can you also explain the potential side effects of the change in the PR ?
thx


use wildcards in asset_path

Hi
Im trying to use the action, and looks like i can't use wildcards.
i would like to do is upload any *.whl file in that dist folder using this:
asset_path: dist/*.whl
But i have an error as the file is not found. Looks like  I need to specify the asset_path with the full name:
asset_path: dist/whatthefuzz-0.1.2-py3-none-any.whl
Is there any way of upload the content using wildcards as i am trying to do?
Thanks

In a similar fashion (possible exactly the same scenario as OP) I have an asset with a version appended to the filename. It would be easier to use a wildcard in place of grabbing the version.

see #9 and #24 - sadly nothing is happening here :/

Hi @konradpabjan thanks on your recent v2 on your artifact actions. Would it be possible for you to use some of the code from https://github.com/actions/upload-artifact to this repo too?  softprops/action-gh-release is a common alternative but I think the official version could use some love

Hi @publicarray the v2 upload artifact action uses @actions/glob to handle wildcard search behind the scenes to handle wildcards. It should be possible to easily use this with any other actions.
Upload releases is not my cup of tea unfortunately and I haven't worked with this action before. I can try to ping the necessary parties to see if this could maybe get some love.

Hey @konradpabjan,
do you maybe have some information for us? :)

@derTobsch, meanwhile, eine/tip might work for you. See https://github.com/actions/upload-artifact/issues/21#issuecomment-628995879

This isn't entirely what was asked, and I still think support for wildcards is needed, but I wanted to point folks in the direction of https://github.com/actions/github-script as well, in case anyone is stuck waiting for a solution here. Effectively, you can easily do anything that you can do with the rest API and a Node script.
I had the same issue of wanting to upload artifacts where the names are dynamic, and solved it with this action:
- name: Create Release
  uses: actions/github-script@v2
  with:
    github-token: ${{secrets.GITHUB_TOKEN}}
    script: |
      console.log('environment', process.versions);

      const fs = require('fs').promises;

      const { repo: { owner, repo }, sha } = context;
      console.log({ owner, repo, sha });

      const release = await github.repos.createRelease({
        owner, repo,
        tag_name: process.env.GITHUB_REF,
        draft: true,
        target_commitish: sha
      });

      console.log('created release', { release });

      for (let file of await fs.readdir('.')) {
        // do whatever filtering you want here, I'm just uploading all the files
        console.log('uploading', file);

        await github.repos.uploadReleaseAsset({
          owner, repo,
          release_id: release.data.id,
          name: file,
          data: await fs.readFile(`./${file}`)
        });
      }

@catdad does github-scripts allow defining arbitrary npm packages as dependencies or is it limited to a fixed set?

@eine Best I can tell, no dependencies are available by default, but you can install anything you want in a previous step of the same job.

as a workaround can this work?
     - name: Get Name of Artifact         run: |           ARTIFACT_PATHNAME=$(ls target/*.jar | head -n 1)           ARTIFACT_NAME=$(basename $ARTIFACT_PATHNAME)           echo ::set-env name=ARTIFACT_NAME::${ARTIFACT_NAME}           echo ::set-env name=ARTIFACT_PATHNAME::${ARTIFACT_PATHNAME}       - name: upload release asset ${{ env.GITHUB_TAG }}         id: upload-release-asset         uses<EMAIL_ADDRESS>       env:           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}         with:           upload_url: ${{ steps.create_release.outputs.upload_url }}           asset_path: ${{ env.ARTIFACT_PATHNAME }}           asset_name: ${{ env.ARTIFACT_NAME }}           asset_content_type: application/java-archive

I solved it with this workaround, I save the filename to the step output, and then retrieve it in a later stage. For this I had to add an ID to my step as shown below.
- name: Pack tarball
  id: pack_tarball
  run: |
    PACK_NAME=$(npm pack | tail -n 1)
    echo "::set-output name=tar_filename::$PACK_NAME"
- name: Upload Release Asset
  id: upload-release-asset
  uses: actions/upload-release-asset@v1
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
    asset_path: ./${{ steps.pack_tarball.outputs.tar_filename }}
    asset_name: ${{ steps.pack_tarball.outputs.tar_filename }}
    asset_content_type: application/gzip

This isn't entirely what was asked, and I still think support for wildcards is needed, but I wanted to point folks in the direction of actions/github-script as well, in case anyone is stuck waiting for a solution here. Effectively, you can easily do anything that you can do with the rest API and a Node script.
I had the same issue of wanting to upload artifacts where the names are dynamic, and solved it with this action:
- name: Create Release
  uses: actions/github-script@v2
  with:
    github-token: ${{secrets.GITHUB_TOKEN}}
    script: |
      console.log('environment', process.versions);

      const fs = require('fs').promises;

      const { repo: { owner, repo }, sha } = context;
      console.log({ owner, repo, sha });

      const release = await github.repos.createRelease({
        owner, repo,
        tag_name: process.env.GITHUB_REF,
        draft: true,
        target_commitish: sha
      });

      console.log('created release', { release });

      for (let file of await fs.readdir('.')) {
        // do whatever filtering you want here, I'm just uploading all the files
        console.log('uploading', file);

        await github.repos.uploadReleaseAsset({
          owner, repo,
          release_id: release.data.id,
          name: file,
          data: await fs.readFile(`./${file}`)
        });
      }

One bug I found with this solution is when referring to needs/steps within the async/await functions and loops, you get an error needs not defined or steps not defined and seems to lose variable scope.
This can be fixed by adding the values needs to variables within the script scope. For example:
- name: Upload
  uses: actions/github-script@v3
  with:
    github-token: ${{secrets.GITHUB_TOKEN}}
    script: |
      const path = require('path');
      const fs = require('fs');
      **const release_id = '${{ needs.create_release.outputs.id }}';**
      for (let file of await fs.readdirSync('./')) {
        if (path.extname(file) === '.zip') {
          console.log('uploadReleaseAsset', file);
          await github.repos.uploadReleaseAsset({
            owner: context.repo.owner,
            repo: context.repo.repo,
            release_id: release_id,
            name: file,
            data: await fs.readFileSync(`./${file}`)
          });
        }
      }


Update Docs Overriding-files.md

bug fix on voyager base controller link to refer to current branch file

Good catch!


python310Packages.sanic: enable since GHSA-7p79-6x2v-5h88 is resolved for >=20.12.6

Description of changes
This commit reverts bf149c4, since GHSA-7p79-6x2v-5h88 only applies to sanic <20.12.6

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] 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

[ ] 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
[ ] 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.

Created the PR on nixos-unstable by mistake.


Tower layer compat 404 not found and TowerServiceCompat  bounds too restrictive

Describe the bug

My tower layer with compat is never called (the server always return a 404 request on /engine.io with the default html page, the service is never called)
The TowerServiceCompat bounds requires an inner service with hyper::Request<ReqBody> and ReqBody is not generic (it is an internal type in salvo, therefore it is impossible to use TowerServiceCompat from outside of the lib). Maybe we could release this bound, either by using hyper::Incoming type, or even better : http_body::Body type.

To Reproduce

git clone https://github.com/Totodore/socketioxide --branch chore(deps)-hyper-1.0
Start the example: cargo run --bin salvo-echo
Make a request on http://<IP_ADDRESS>:3000/engine.io
Here is the link to the tower and hyper 1.0 service implementation: engineioxide/src/service/hyper_service.rs

Expected behavior

I should be able to get a response code != 404 when making GET requests on http://<IP_ADDRESS>:3000/engine.io
I should be able to call .compat() on a tower service with hyper::Request<Incoming> or hyper::Request<impl http_body::Body> bound. The solution might be to change the bound to hyper::Request<Into<ReqBody>> if ReqBody implements From<Incoming> for example.

Desktop (please complete the following information):

OS: Windows
Browser: Chrome
Version: 0.58.2

Additional context
It is more a feature request but the add of a compat() trait for any hyper::Service would help me a lot because it does not exist with hyper 0.4. Therefore it would be possible have the two differrent implementation for hyper v0.4 and v1 at the same time.
I would be able to provide backward compatibility when enabling the feature hyper-1.0 for my socket.io lib. Also it would make the feature hyper-1.0 only additive.

Router::with_path("<**path>").hoop(layer).get(hello);

This router only match path "/". You can try to use this Router config:
Router::with_path("<**path>").hoop(layer).get(hello);

Thank you for your response, I should have read the docs correctly

For the second point, are you considering making a PR to release the Service trait bound ? Or is there any alternative solution ?

For the second point, are you considering making a PR to release the Service trait bound ? Or is there any alternative solution ?

Can you check branch tower-compat branch. I am not sure it can work correctly.


commit, begintransaction, rollback

commit, begintransaction, rollback

Just use the pdo object. http://medoo.in/api/pdo


Test report randomly appears under different workflow

Unfortunately running into the same issue as https://github.com/phoenix-actions/test-reporting/issues/25. Test results of one workflow appear under another unrelated workflow if they are running relatively close together. Test result names are different.
Test runner runs on commit:
- name: Create test report
      uses: phoenix-actions/test-reporting@v15
      if: success()
      with:
        name: 'test-results-...matrix'
        fail-on-error: true
        path: mochawesome.json
        reporter: mochawesome-json

Build runner triggered manually:
- name: Create test report
      uses: phoenix-actions/test-reporting@v15
      if: success()
      with:
        name: 'build-tests-...matrix'
        fail-on-error: true
        path: mochawesome.json
        reporter: mochawesome-json

Sadly this is a limitation of the way checks work with Github actions as per https://github.com/phoenix-actions/test-reporting?tab=readme-ov-file#github-limitations

Thank you, it appears that there is not much can be done here, closing

Just spotted another fork that appears to combat this issue using a custom annotation https://github.com/hudl/GHA-test-reporter.
Do you think that it is something that can be implemented here?

I'll definitely take a look yep

Just tried it in my build, does not work. Only adds a link to results but posts to a wrong workflow.


feat(cfsvc): cloudflare direct image uploading: Implementation

resolves #249
Client side has 3 steps to call this API:

call directImageUpload to get an direct upload url;
post image as file to this direct upload url;
post result url to singleFileUpload to get Asset;

resolved and now Client side has 3 steps to call this API:

call directImageUpload to get an Asset with direct upload url;
post image as file to this direct upload url;
(async with ignore if error) post result url to singleFileUpload, mark draft boolean to false;


Utility: retrieve current local variables and their stack offsets

At the beginning of a function, we should be able to determine the list of local variables and their relative offsets on the stack. This is possible by analyzing the bytecode and source mappings, and correlating:

source position of a PUSH opcode
source position of a local variable

This function should return a list of local variables with names, types, whether it is an input, output or local variable and stack offsets relative to the function entry point.

and the memory location also? (if this is stack, memory or storage)

We need better index structures for scopes to display local variables in the current and higher scopes correctly.
Every step has a "scope id" which is a string of the form <IP_ADDRESS> which means it is the first (internal) function call at the highest level and inside that, the third, inside that the second and inside that the fourth.
While we traverse the trace, we build up two index structures:
scopes[scopeId] = {
  firstStep: 7, // the step right after the jump instruction (with "jump into" annotation) that jumps into this scope
  lastStep: 4, // the step at the jump instruction (with "jump out" annotation) which leaves this scope
  locals: [...] // list of variables local to the current scope, with their AST node id and stack height
}
scopeStarts[stepIndex] = scopeId
// this is a list such that inverts the scopes[scopeId].firstStep mapping, i.e.
// scopes[scopeStarts[stepIndex]].firstStep = stepIndex

Both indices are created with a single loop over the trace, which performs recursive calls:
function buildIndex(step, scopeId) = {
  subScope = 1
  scopeStarts[step] = scopeId
  scopes[scopeId].firstStep = step
  while (step < maxStep) {
    if step is a "jump into" {
      step = buildIndex(step + 1, scopeId + '.' + subScope)
      subScope++
    } else if step is a "jump out" {
      scopes[scopeId].lastStep = step
      return step + 1
    } else if step is a "push" {
      retrieve AST node id from source location
      if it is a variable declaration, store it in scopes[scopeId].locals
      step++
    } else {
      step++
    }
  }
}
buildIndex(0, '')

At "runtime", we search for the current scope of the current step:
do a binary search in scopeStarts to find the last step s which starts a new scope before the current step and set scopeId = scopeStarts[s]. Since we could have returned from that scope already, do:
while (scopes[s].lastStep < current step) { chop off one element from the scope id }
With that scope id, retrieve the locals in scopes[scopeId] and display their current values (by looking at the stack). If desired, we can also display the locals of higher-level scopes by looking at scopes[scopeIdUp] where we chop off elements from the current scope id one by one.


Kuldge data/nodes: fake node for begin and end of course and conventionalized node layout positions

-datasets should have "begin course" ER (e.g., course description or syllabus) and "end course" (e.g., "farewell email" or some other thing that gets generated at the end of the course"

these two special ERs gets picked up by the visualizer and get represented by two special nodes, Begin Node (BN) and End Node (EN)
the BN and EN nodes get programmatically assigned positions in the layout -
assume (0,0) is lower left course, BN is in position (0, max/2) (left edge, midway between top and bottom)
EN is in position (max, max/2) (right edge, midway between top and bottom)
then the remainder of the nodes get automatically laid out with physics between BN and EN
this will kinda-sorta create a "tablature" layout, kinda-sorta approximating a gantt chart

Hi Melanie,
I checked and it is possible to have BN and EN nodes set at specific positions. I set the BN at x = -1000, y = 0 and EN at x = 1000, y = 0. The result looks like this:

The x values are roughly based on the width of the area for the network and my assumption is that both nodes are part of the dataset (currently they are derived from the CSV input) with type "start" and "end" respectively (Their displayed title can be anything). at the moment I am using a "diamond" to represent the nodes in the same color as iERs

I think this helps quite a bit with the initial layout, so let's keep that in for now.

yay!  this was the solution I was hoping for!


stan: connection closed error

I'm seeing this error. I'm not sure if it is occurring during graceful shutdown.

From splunk, all the logs related to stan: connection closed point to \"time\":\"2021-07-14T18:04:35Z\", which was the time that I implemented stan reliable reconnection, and deployed to the cluster. After deployment, I manually killed stan pods for testing, I believe that is the reason the error was seen.
https://pi.nonprod.splunk.intuit.com/en-US/app/search/search?q=search clustername%3A%3Atech-pi-ppd-usw2-k8s  index%3Diks sourcetype%3Dfluent  "stan%3A connection closed" "kubernetes.pod_name"%3D"test-encryption-encrypt-0"&display.page.search.mode=smart&dispatch.sample_ratio=1&earliest=-30d%40d&latest=now&display.general.type=events&display.prefs.events.count=50&sid=1628124980.16764_24CA7F83-6CCF-483A-9D76-4078CCA3BF69


Add<EMAIL_ADDRESS>

This is mostly a copy-upgrade from 2.7 that brings the module and its dependencies up to date. Yet, I decided to replace the pigz cc_library by a cc_binary as that is what pigz actually is and that also makes the binary usable via the label @pigz. For backwards compatibility, I kept an alias "bin".

Hello @alexeagle, modules you maintain (pigz) have been updated in this PR. Please review the changes.

Cc: @alexeagle, the author of 2.7 of this module

I'll wait for @alexeagle to give the final approval.

ping @alexeagle


"ERROR: UndefKeywordError: keyword argument _____ not assigned" when doing all(__)

Hello!  I really am eager to see SearchLight become a fully-documented web framework for Julia, something the language desperately needs.  The code looks very capable, it's just a challenge to find out how to use it correctly.
Anyway, here's the issue I'm having at the moment.  I'm using SearchLight v2.2.1, but this also happened with v2.2.0.
I have a resource TTIntervals which defines the following struct and corresponding kwdef constructor:
@kwdef mutable struct TTInterval <: AbstractModel
    id::DbId = DbId()
    node_id::Int64
    user_id::Int64
    start_time::DateTime
    #end_times can be nothing (aka NULL):
    end_time::Union{DateTime,Nothing}=nothing
end

Here is the sql from sqldump that describes the resulting table in the database:
CREATE TABLE `ttintervals` (
  `id` int NOT NULL AUTO_INCREMENT,
  `node_id` int DEFAULT NULL,
  `user_id` int DEFAULT NULL,
  `start_time` datetime DEFAULT NULL,
  `end_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `ttintervals__idx_node_id` (`node_id`),
  KEY `ttintervals__idx_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

I have this data in the database added through SearchLight by making an instance of TTInterval and save!(ing) it:
mysql> select * from ttintervals;
+----+---------+---------+---------------------+---------------------+
| id | node_id | user_id | start_time          | end_time            |
+----+---------+---------+---------------------+---------------------+
|  1 |       1 |       1 | 2022-01-01 00:00:00 | 2023-01-01 00:00:00 |
|  2 |       1 |       1 | 2022-01-01 00:00:00 | 2023-01-01 00:00:00 |
|  3 |       1 |       1 | 2022-01-01 00:00:00 | 2023-01-01 00:00:00 |
|  4 |       1 |       1 | 2022-05-03 14:32:05 | 2023-01-01 00:00:00 |
|  5 |       1 |       1 | 2022-05-03 14:32:05 | 2023-01-01 00:00:00 |
|  6 |       1 |       1 | 2022-05-03 14:32:05 | 2023-01-01 00:00:00 |
|  7 |       1 |       1 | 2022-05-03 14:32:05 | NULL                |
|  8 |       1 |       1 | 2022-05-03 14:32:05 | 2023-01-01 00:00:00 |
|  9 |       1 |       1 | 2022-05-03 14:32:05 | 2023-01-01 00:00:00 |
| 10 |       1 |       1 | 2022-05-03 14:32:05 | NULL                |
| 11 |       1 |       1 | 2022-05-03 14:32:05 | NULL                |
| 12 |       1 |       1 | 2022-05-03 14:32:05 | NULL                |
+----+---------+---------+---------------------+---------------------+
12 rows in set (0.00 sec)

The issue comes when I try to retrieve the data.  It doesn't matter of I do a find() or a all(), anything that tries to convert DataTables into objects results in the same error.  Here it is:
julia> using SearchLight

julia> all(TTIntervals.TTInterval)
[ Info: 2022-05-22 01:19:18 SELECT `ttintervals`.`id` AS `ttintervals_id`, `ttintervals`.`node_id` AS `ttintervals_node_id`, `ttintervals`.`user_id` AS `ttintervals_user_id`, `ttintervals`.`start_time` AS `ttintervals_start_time`, `ttintervals`.`end_time` AS `ttintervals_end_time` FROM `ttintervals` ORDER BY ttintervals.id ASC
ERROR: UndefKeywordError: keyword argument node_id not assigned
Stacktrace:
 [1] TTIntervals.TTInterval()
   @ TTIntervals ./util.jl:453
 [2] to_model(m::Type{TTIntervals.TTInterval}, row::DataFrames.DataFrameRow{DataFrames.DataFrame, DataFrames.Index}; skip_callbacks::Vector{Symbol})
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:493
 [3] to_model
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:492 [inlined]
 [4] to_model!!
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:572 [inlined]
 [5] to_models(m::Type{TTIntervals.TTInterval}, df::DataFrames.DataFrame)
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:473
 [6] find(m::Type{TTIntervals.TTInterval}, q::SQLQuery, j::Nothing) (repeats 2 times)
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:92
 [7] #all#34
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:179 [inlined]
 [8] all(m::Type{TTIntervals.TTInterval})
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:179
 [9] top-level scope
   @ REPL[4]:1

The stack trace at [2] points to this code:
@ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:493

function to_model(m::Type{T}, row::DataFrames.DataFrameRow; skip_callbacks::Vector{Symbol} = Symbol[])::T where {T<:AbstractModel}
  _m::T = try
->  m()
  catch ex
    isa(ex, MethodError) ? Base.invokelatest(m) : rethrow(ex)
  end

It seems that SearchLight is trying to create an instance of the model without providing any kwargs at all and that's erroring out.  It's in a try though so I'm not really sure why it's erroring out, but it is.
It seems like putting something in the DB and taking it out again is pretty normal stuff for an ORM, so I'm baffled that I would be the only one having this issue.

Also, is this the right way to define fields that can be NULL (TTInterval.end_time)?

@andyDoucette it's been quite a few years since this was developed but I'm pretty sure the issue is that SearchLight does not yet support Union types. The code was actually written before Union{Nothing,T} were the way to represent nullables. For some reason this problem rarely comes up so nobody actually worked on it.
So the issue is that we need to extend the logic that retrieves the data from the DB in whatever Julia type it comes, and then convert it to the Union type specified by the model's field.

Thank you for responding.  I changed the definition to the following as a sloppy work-around and it still does not work:
    #We need to do this because SearchLight does not yet support nullable fields:
    dateRepresentsNotDefined=DateTime(1000)

    #This is used to store the beginning and end of a time tracking period for a given user on a given node.
    @kwdef mutable struct TTInterval <: AbstractModel
        id::DbId = DbId()
        node_id::Int64
        user_id::Int64
        start_time::DateTime
        end_time::DateTime=dateRepresentsNotDefined
    end

It's the same error, happening when pulling data from the database and trying to make a model of it.  The system tries to make an empty structure first and errors out there because my model requires a value for each field.  I really don't want to have to set defaults because that implies that it's "ok" to make a model that's partially undefined.
julia> a=TTIntervals.TTInterval(node_id=1,user_id=1,start_time=DateTime(2020))
julia> save(a)
[ Info: 2022-05-24 23:07:04 INSERT INTO ttintervals ( `node_id`, `user_id`, `start_time`, `end_time` ) VALUES ( 1, 1, '2020-01-01T00:00:00', '1000-01-01T00:00:00' )
true
julia> all(TTIntervals.TTInterval)
[ Info: 2022-05-24 23:09:12 SELECT `ttintervals`.`id` AS `ttintervals_id`, `ttintervals`.`node_id` AS `ttintervals_node_id`, `ttintervals`.`user_id` AS `ttintervals_user_id`, `ttintervals`.`start_time` AS `ttintervals_start_time`, `ttintervals`.`end_time` AS `ttintervals_end_time` FROM `ttintervals` ORDER BY ttintervals.id ASC
ERROR: UndefKeywordError: keyword argument node_id not assigned
Stacktrace:
 [1] TTIntervals.TTInterval()
   @ TTIntervals ./util.jl:453
 [2] to_model(m::Type{TTIntervals.TTInterval}, row::DataFrames.DataFrameRow{DataFrames.DataFrame, DataFrames.Index}; skip_callbacks::Vector{Symbol})
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:493
 [3] to_model
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:492 [inlined]
 [4] to_model!!
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:572 [inlined]
 [5] to_models(m::Type{TTIntervals.TTInterval}, df::DataFrames.DataFrame)
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:473
 [6] find(m::Type{TTIntervals.TTInterval}, q::SQLQuery, j::Nothing) (repeats 2 times)
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:92
 [7] #all#34
   @ ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:179 [inlined]
 [8] all(m::Type{TTIntervals.TTInterval})
   @ SearchLight ~/.julia/packages/SearchLight/2kAM0/src/SearchLight.jl:179
 [9] top-level scope
   @ REPL[17]:1

I've had a very long discussion yesterday on the Julia slack about this. It really seems that there is no easy way around it. There are a multitude of factors, including how Julia handles Union types, the fact that the Julia type has no equivalent in the DB types, etc.
Additionally it's also a reflection of the design decisions within SearchLight. Indeed, the requirement is that SearchLight is able to create a default instance of the struct. I think it's because SearchLight dev started a long time ago where there was no easy way to pass a number of unknown kwargs (which was solved by the introduction of NamedTuples later on).
Based on the discussion I've had, one potential solution is to switch to (or add) logic to first attempt to instantiate the specific object, by invoking the constructor and passing the kwargs. This might allow the compiler to construct the correct type of the Union. But it's not guaranteed as the union should not be ambiguous. I expect that it will work to express nullable types as Union{T,Nothing} but won't work for more complex Unions. But it's worth a try.
Beyond this, the recommendation was to go with user defined constructors and user defined convert/parse methods.
I can take a quick try at refactoring SearchLight to directly construct the object using the values retrieved from the DB. But to make it easier for me, can you please share a Julia file with a MWE I can use as test? Model definition and SQLite DB to replicate the issue and use as failing/passing test? Thanks.


Documentation Bug?

This was an upstream bug that was patched a couple days ago: https://github.com/JuliaDocs/Documenter.jl/pull/269. It looks like the docs were built before that fix was pushed out. I just started a rebuild, hopefully it fixes this.

This now fixed on the latest docs: http://gadflyjl.org/latest/


API rate limit GitHub exceeded in 70% of our workflows

In order to work arround the API rate limits from GitHub it would be great if we can provide a secret to do authenticated requests to the GitHub api to prevent following issue.
Error: HttpError: API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)
Error: API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

Sorry. It already exists as a feature. Missed it in the README.md


chore: add sa methods wagmi ethers

Description
Add missing smart account methods for wagmi and ethers
Type of change

[x] Chore (non-breaking change that addresses non-functional tasks, maintenance, or code quality improvements)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Associated Issues
For Linear issues: Closes APKT-xxx
For GH issues: closes #...
Showcase (Optional)
If there is a UI change include the screenshots with before and after state.
If new feature is being introduced, include the link to demo recording.
Checklist

[ ] Code in this PR is covered by automated tests (Unit tests, E2E tests)
[ ] My changes generate no new warnings
[ ] I have reviewed my own code
[ ] I have filled out all required sections
[ ] I have tested my changes on the preview link
[ ] Approver of this PR confirms that the changes are tested on the preview link

This is missing a changeset and a test 😅


Misc server changes

Add go-to (projection) and hover docs for structure fields
Check prefix in set_option completion and only show options with that prefix
Go-to-declaration now jumps to the parser while go-to-def jumps to the elaborator as suggested by @gebner

The latest change is not in the server but I thought it didn't warrant a separate PR. Just adds more UInt casts.


add_metaclass fails with name-mangled slots

The add_metalclass decorator assumes that all members of __slots__ will be exposed in the class __dict__, but this isn't true for name-mangled slots (those having at least two leading underscores and at most one trailing underscore). Example:
import six

class Meta(type):
    pass

@six.add_metaclass(Meta)
class Foo(object):
    __slots__ = (
        'something',
        '_something',
        '__something'
    )

Running this gives the error:
$ python bug.py
Traceback (most recent call last):
  File "bug.py", line 7, in <module>
    class Foo(object):
  File "/home/apearce/tmp/six-bug/venv/lib/python3.6/site-packages/six.py", line 844, in wrapper
    orig_vars.pop(slots_var)
KeyError: '__something'

This is because the __something slot is given the key _Foo__something key in __dict__, not __something.
Workarounds
Using with_metaclass works.
import six

class Meta(type):
    pass

class Some(six.with_metaclass(Meta, object)):
    __slots__ = (
        'something',
        '_something',
        '__something'
    )

Solutions
One way around this would be to detect if name mangling will happen.
def _mangled_name(cls, name):
    """Return the mangled version of name belonging to cls, if appropriate.

    Python applies name mangling if the name starts with at least two
    underscores and ends with at most one underscore.
    """
    mangled = name.startswith('__') and not name.endswith('__')
    if mangled:
        name = '_{0}{1}'.format(cls.__name__, name)
    return name

def add_metaclass(metaclass):
    """Class decorator for creating a class with a metaclass."""
    def wrapper(cls):
        orig_vars = cls.__dict__.copy()
        slots = orig_vars.get('__slots__')
        if slots is not None:
            if isinstance(slots, str):
                slots = [slots]
            for slots_var in slots:
                orig_vars.pop(_mangled_name(cls, slots_var))
        orig_vars.pop('__dict__', None)
        orig_vars.pop('__weakref__', None)
        return metaclass(cls.__name__, cls.__bases__, orig_vars)
    return wrapper

I'd open an MR with this, but am not sure if this is the ideal solution.

@benjaminp, after thinking about it further, I believe @alexpearce may be correct that using with_metaclass may be the best approach. Perhaps this could be resolved with a documentation change encouraging folks to use with_metaclass over the add_metaclass decorator.
Additional note, I think that with_metaclass could be also allow for bases not defined within the arguments of the function call by changing meta(name, bases, d) to meta(name, bases + list(this_bases), d). I'm not sure that it is necessarily that beneficial.


⚠ Jurnal has degraded performance

In e3b5601, Jurnal (https://jurnal.unmer.ac.id) experienced degraded performance:

HTTP code: 200
Response time: 19456 ms

Resolved: Jurnal performance has improved in 812a2e9.


Tapo P115 Switch missing

Version of the custom_component
Version v1.2.15 installed through HACS
Firmware 1.0.15
Hardware version 1.0
Configuration
New TP-Link P115
Added the integration and the device.
Which works as expected.
Describe the bug
Missing a switch entity to turn the switch on and off.
I have several sensors so the communication is working.
However I don't have a switch entity.

Ok somehow it took some longer.
Switch is available now.
Sorry for this issue report


send badge payload only when needed, to avoid a hard reset

https://issues.jboss.org/browse/AGPUSH-1495

@sebastienblanc @danbev mind to review ?

@matzew I can't see any JIRA issue referenced, was just curious if this was reported or came up during a testing?

@lfryc it comes from a community request on the mailing list.

:eyes:

:+1:
@matzew Looks good. As a suggestion, perhaps we can add a few tests for this as well?

@lfryc it comes from a community request on the mailing list.

Anyway let's create a JIRA to track it.

@danielpassos  Jira link has been added by @matzew


No videos will play | object of type 'NoneType' has no len()

Bug report
Your Environment

Netflix add-on version: latest release 1.10.1
Operating system version/name: CoreElec Nightly / Kodi 18.9.8
Device model:  TX3 S905X3

Used Operating system:

[x ] Linux

Describe the bug
object of type 'NoneType' has no len() when trying to play any videos. This came after initial setup and post widevine install.
Rebooting as suggested in another issue did not solve it.
Expected behavior
Expect to play video
Actual behavior
As above
Steps to reproduce the behavior

Clean install of Corelec, latest version of netflix app.

Debug log
2020-11-06 04:00:34.782 T:3867984768  NOTICE: Previous line repeats 2 times.
2020-11-06 04:00:34.782 T:3867984768   ERROR: EXCEPTION: Invalid setting type
2020-11-06 04:00:34.783 T:3867984768  NOTICE: [script.module.inputstreamhelper] Widevine update check was made on 2020-11-06 03:47
2020-11-06 04:00:35.544 T:4062453776  NOTICE: VideoPlayer::OpenFile: /storage/.kodi/userdata/addon_data/plugin.video.netflix/shows/Community/S05E03.strm
2020-11-06 04:00:35.546 T:3156251520  NOTICE: Creating InputStream
2020-11-06 04:00:35.666 T:3156251520   ERROR: GetDirectory - Error getting /usr/lib/kodi/addons/inputstream.adaptive/
2020-11-06 04:00:41.622 T:3231548288   ERROR: [plugin.video.netflix (0)] Traceback (most recent call last):
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/http_server.py", line 75, in do_GET
                                                data = self.server.msl_handler.load_manifest(int(params['id'][0]))
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_utils.py", line 61, in error_catching_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_handler.py", line 130, in load_manifest
                                                manifest = self._load_manifest(viewable_id, get_esn())
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_handler.py", line 230, in _load_manifest
                                                disable_msl_switch=False)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_requests.py", line 168, in chunked_request
                                                self._post(endpoint, self.msl_request(request_data, esn, auth_data)),
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_request_builder.py", line 52, in msl_request
                                                return (json.dumps(self._signed_header(esn, auth_data)) +
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_request_builder.py", line 71, in _signed_header
                                                encryption_envelope = self.crypto.encrypt(self._headerdata(auth_data=auth_data, esn=esn), esn)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/default_crypto.py", line 80, in encrypt
                                                cipher = AES.new(self.encryption_key, AES.MODE_CBC, init_vector)
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 232, in new
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/__init__.py", line 79, in _create_cipher
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/_mode_cbc.py", line 274, in _create_cbc_cipher
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 92, in _create_base_cipher
                                            TypeError: object of type 'NoneType' has no len()
2020-11-06 04:00:41.623 T:3156251520   ERROR: CCurlFile::FillBuffer - Failed: HTTP returned error 400
2020-11-06 04:00:41.623 T:3156251520   ERROR: CCurlFile::Open failed with code 400 for http://<IP_ADDRESS>:53953/manifest?id=80033505:
2020-11-06 04:00:41.623 T:3156251520   ERROR: AddOnLog: InputStream Adaptive: Cannot download http://<IP_ADDRESS>:53953/manifest?id=80033505
2020-11-06 04:00:41.624 T:3156251520   ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://<IP_ADDRESS>:53953/manifest?id=80033505)
2020-11-06 04:00:41.624 T:3231548288   ERROR: Traceback (most recent call last):
2020-11-06 04:00:41.624 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 293, in _handle_request_noblock
2020-11-06 04:00:41.624 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
2020-11-06 04:00:41.624 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
2020-11-06 04:00:41.625 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 657, in __init__
2020-11-06 04:00:41.625 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 716, in finish
2020-11-06 04:00:41.625 T:3231548288   ERROR:   File "/usr/lib/python2.7/socket.py", line 283, in close
2020-11-06 04:00:41.625 T:3231548288   ERROR:   File "/usr/lib/python2.7/socket.py", line 307, in flush
2020-11-06 04:00:41.625 T:3231548288   ERROR: error: [Errno 32] Broken pipe
2020-11-06 04:00:41.626 T:3156251520   ERROR: CVideoPlayer::OpenInputStream - error opening [/storage/.kodi/userdata/addon_data/plugin.video.netflix/shows/Community/S05E03.strm]
2020-11-06 04:00:41.626 T:3156251520  NOTICE: CVideoPlayer::OnExit()
2020-11-06 04:00:41.657 T:4062453776  NOTICE: CVideoPlayer::CloseFile()
2020-11-06 04:00:41.684 T:4062453776  NOTICE: VideoPlayer: waiting for threads to exit
2020-11-06 04:00:41.684 T:4062453776  NOTICE: VideoPlayer: finished waiting
2020-11-06 04:00:41.686 T:3640640384 WARNING: [plugin.video.netflix (0)] ActionController: Possible problem with video playback, action managers disabled.
2020-11-06 04:00:43.735 T:3649033088  NOTICE: [plugin.video.themoviedb.helper]
                                            HTTP Error Code: 404
                                            Request: https://api.themoviedb.org/3/search/season?&language=en-GB&include_image_language=en,null&query=Community&region=GB
2020-11-06 04:00:45.048 T:3828872064   ERROR: GetDirectory - Error getting include
2020-11-06 04:00:47.310 T:3933184896   ERROR: Previous line repeats 37 times.
2020-11-06 04:00:47.310 T:3933184896   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/6/6d61f70f.jpg
2020-11-06 04:00:47.318 T:3828872064   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/5/5b322a7a.jpg
2020-11-06 04:00:47.319 T:3876377472   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/0/01b9d5bf.jpg
2020-11-06 04:00:47.321 T:3206370176   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/1/1397a10e.jpg
2020-11-06 04:00:47.666 T:3933184896   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/7/74ea69fc.jpg
2020-11-06 04:00:47.686 T:3876377472   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/e/e362d8f6.jpg
2020-11-06 04:00:48.436 T:3828872064   ERROR: DoWork - Direct texture file loading failed for special://masterprofile/Thumbnails/b/b635284a.jpg
2020-11-06 04:00:48.693 T:3649033088  NOTICE: [plugin.video.themoviedb.helper]
                                            HTTP Error Code: 404
                                            Request: https://api.themoviedb.org/3/search/episode?&language=en-GB&include_image_language=en,null&query=La Révolution&region=GB
2020-11-06 04:00:52.353 T:3126932352  NOTICE: Previous line repeats 1 times.
2020-11-06 04:00:52.353 T:3126932352   ERROR: EXCEPTION: Invalid setting type
2020-11-06 04:00:52.354 T:3126932352  NOTICE: [script.module.inputstreamhelper] Widevine update check was made on 2020-11-06 03:47
2020-11-06 04:00:52.974 T:4062453776  NOTICE: VideoPlayer::OpenFile: /storage/.kodi/userdata/addon_data/plugin.video.netflix/shows/La Révolution/S01E03.strm
2020-11-06 04:00:52.980 T:3099579264  NOTICE: Creating InputStream
2020-11-06 04:00:53.009 T:3099579264   ERROR: GetDirectory - Error getting /usr/lib/kodi/addons/inputstream.adaptive/
2020-11-06 04:00:54.658 T:3231548288   ERROR: [plugin.video.netflix (0)] Traceback (most recent call last):
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/http_server.py", line 75, in do_GET
                                                data = self.server.msl_handler.load_manifest(int(params['id'][0]))
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_utils.py", line 61, in error_catching_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_handler.py", line 130, in load_manifest
                                                manifest = self._load_manifest(viewable_id, get_esn())
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_handler.py", line 230, in _load_manifest
                                                disable_msl_switch=False)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_requests.py", line 168, in chunked_request
                                                self._post(endpoint, self.msl_request(request_data, esn, auth_data)),
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/utils/logging.py", line 164, in timing_wrapper
                                                return func(*args, **kwargs)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_request_builder.py", line 52, in msl_request
                                                return (json.dumps(self._signed_header(esn, auth_data)) +
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/msl_request_builder.py", line 71, in _signed_header
                                                encryption_envelope = self.crypto.encrypt(self._headerdata(auth_data=auth_data, esn=esn), esn)
                                              File "/storage/.kodi/addons/plugin.video.netflix/resources/lib/services/msl/default_crypto.py", line 80, in encrypt
                                                cipher = AES.new(self.encryption_key, AES.MODE_CBC, init_vector)
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 232, in new
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/__init__.py", line 79, in _create_cipher
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/_mode_cbc.py", line 274, in _create_cbc_cipher
                                              File "/usr/lib/python2.7/site-packages/Crypto/Cipher/AES.py", line 92, in _create_base_cipher
                                            TypeError: object of type 'NoneType' has no len()
2020-11-06 04:00:54.659 T:3099579264   ERROR: CCurlFile::FillBuffer - Failed: HTTP returned error 400
2020-11-06 04:00:54.659 T:3099579264   ERROR: CCurlFile::Open failed with code 400 for http://<IP_ADDRESS>:53953/manifest?id=81021085:
2020-11-06 04:00:54.659 T:3099579264   ERROR: AddOnLog: InputStream Adaptive: Cannot download http://<IP_ADDRESS>:53953/manifest?id=81021085
2020-11-06 04:00:54.659 T:3099579264   ERROR: AddOnLog: InputStream Adaptive: Could not open / parse mpdURL (http://<IP_ADDRESS>:53953/manifest?id=81021085)
2020-11-06 04:00:54.660 T:3231548288   ERROR: Traceback (most recent call last):
2020-11-06 04:00:54.660 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 293, in _handle_request_noblock
2020-11-06 04:00:54.660 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
2020-11-06 04:00:54.660 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
2020-11-06 04:00:54.660 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 657, in __init__
2020-11-06 04:00:54.661 T:3231548288   ERROR:   File "/usr/lib/python2.7/SocketServer.py", line 716, in finish
2020-11-06 04:00:54.661 T:3231548288   ERROR:   File "/usr/lib/python2.7/socket.py", line 283, in close
2020-11-06 04:00:54.661 T:3231548288   ERROR:   File "/usr/lib/python2.7/socket.py", line 307, in flush
2020-11-06 04:00:54.661 T:3231548288   ERROR: error: [Errno 32] Broken pipe
2020-11-06 04:00:54.662 T:3099579264   ERROR: CVideoPlayer::OpenInputStream - error opening [/storage/.kodi/userdata/addon_data/plugin.video.netflix/shows/La Révolution/S01E03.strm]
2020-11-06 04:00:54.662 T:3099579264  NOTICE: CVideoPlayer::OnExit()
2020-11-06 04:00:54.691 T:4062453776  NOTICE: CVideoPlayer::CloseFile()
2020-11-06 04:00:54.718 T:3640640384 WARNING: [plugin.video.netflix (0)] ActionController: Possible problem with video playback, action managers disabled.
2020-11-06 04:00:54.718 T:4062453776  NOTICE: VideoPlayer: waiting for threads to exit
2020-11-06 04:00:54.718 T:4062453776  NOTICE: VideoPlayer: finished waiting
2020-11-06 04:00:55.647 T:3876377472   ERROR: GetDirectory - Error getting include

http://paste.kodi.tv/kirulonabu
Had checked this https://github.com/CastagnaIT/plugin.video.netflix/issues/171 thread but that just said to reboot.
Have also tried uninstall, reboot, reinstall, reboot route..

And on fresh install with no other addons, clean netflix install, same issue
http://paste.kodi.tv/ibegekadob

Hi
to try understand something i need a more detailed log then follow these steps in this order:

remove the NF addon and his user data when prompt
enable Kodi debug
reboot device
after the reboot, check if kodi debug is still enabled
install this addon version: plugin.video.netflix_1.10.1_20201106_DebugOn.zip
try reproduce the error
get the big log

hmmm. did that, used that version, first episode i tested played off the bat... :)


Mirror the which rpm

We missed to mirror it which cause bazel build to fail because the
primary download location is down.
What this PR does / why we need it:
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #3603
Special notes for your reviewer:
Release note:

NONE

/cc @dhiller

Will merge it when travis is green to unblock CI.

/cherrypick release-0.30


[physac.h]ResetPhysics crash

PHYSACDEF void ResetPhysics(void)
{
if (physicsBodiesCount > 0)
{
// Unitialize physics bodies dynamic memory allocations
for (unsigned int i = physicsBodiesCount - 1; i >= 0; i--)           <-----line:852    unsigned int ??? endless loop!!!
{
PhysicsBody body = bodies[i];

🤔

@zipxing Reviewed! Thanks!

PHYSACDEF void ClosePhysics(void) LINE894,901
{
// Unitialize physics manifolds dynamic memory allocations
if (physicsManifoldsCount > 0)
{
for (unsigned int i = physicsManifoldsCount - 1; i >= 0; i--)
DestroyPhysicsManifold(contacts[i]);
}
// Unitialize physics bodies dynamic memory allocations
if (physicsBodiesCount > 0)
{
    for (unsigned int i = physicsBodiesCount - 1; i >= 0; i--)
        DestroyPhysicsBody(bodies[i]);
}


Result mismatch of weekOfYear

Backend
VL (Velox)
Bug description
select d,weekofyear(d) from values ('2021-12-31'),('2022-01-01') as data(d)

spark:
+----------+-------------+
|         d|weekofyear(d)|
+----------+-------------+
|2021-12-31|           52|
|2022-01-01|           52|

gluten:
+----------+-------------+
|         d|weekofyear(d)|
+----------+-------------+
|2021-12-31|           52|
|2022-01-01|           53|

Spark version
None
Spark configurations
No response
System information
No response
Relevant logs
No response

Looks this issue is already fixed for Presto but not Spark.
https://github.com/facebookincubator/velox/commit/f8f538ecdbab08ec8bc515acb11a904fbd991e25

@zml1206, could you fix this issue in Velox? In the initial implementation, the only difference between spark and presto is the return type. See https://github.com/facebookincubator/velox/pull/5941. Now we may just need to copy presto's fix for spark.

@zml1206, could you fix this issue in Velox? In the initial implementation, the only difference between spark and presto is the return type. See facebookincubator/velox#5941. Now we may just need to copy presto's fix for spark.

Processing in https://github.com/facebookincubator/velox/pull/10713.


Upgrade FluentValidation to version 11

This upgrade contains breaking changes: 11.0 Upgrade Guide — FluentValidation documentation

This upgrade should be accompanied by a switch from automatic to manual validation.
(More discussion can be found here: https://github.com/FluentValidation/FluentValidation/issues/1959)

Cascade mode was already used correctly.


[MODULES-400] [1.x] Automatically add an OS-version-specific category to the native search path for Linux and Mac OS and fallback to the previous generic category if the OS-version-specific category is not found

https://issues.redhat.com/browse/MODULES-400

Merged manually.  Thanks!


Linecuts2d

As discussed earlier in the similar named issue. Here is my implementation of a 2D meshgrid plotted as individual linecuts. The linecuts are taken along the fast axis.
I don't have an icon at the moment so the button is just a text label.
If there are any questions or suggestions let me know.

Is there anything else that should be done, or are we awaiting the refactoring of the plotting system?

updating the refactored plotting code with this feature would be quick i think.
If @astafan8, @FarBo, and @jenshnielsen think that the refactored plotting is close to merge-ready then we could just wait and do it there.
(waiting for an answer before i do it, though :))

@wpfff
I think it is close to be merged. I am looking forward to test the refactoring PR after it is done.

@MdKquantum the big refactor has now landed so we can look at merging this again. Unfortunately these files have moved a bit. I think the most of your code will now need to go into mpl/plotting.py

I think I just pushed a version of this plotstyle in here with the plot refactor taken in to account.
To do this elegantly we might have to look into how to minimize the amount of if statements in plotting.py and autoplot.py. I checked locally and everything works how I have implemented it, but it might not be the most elegant.
On a side note @wpfff I had the pyqt5 5.15.4 installed and couldn't launch the whole inspectr any more. After a pyqt downgrade everything worked again. I have the traceback for pyqt 5.14.4 saved if you are intrested.

thanks @MdKquantum -- @jenshnielsen or @astafan8 -- could one of you look into the inspectr issue with latest qt? we're not using it here since we don't use the qcodes dataset, so it'd take me a bit to investigate.

@wpfff  sure @MdKquantum could you open a new issue with the traceback you are seeing

I have not my self seen any issues with the latest version of pyqt5
Running
PyQt5                         5.15.4
PyQt5-Qt5                     5.15.2
PyQt5-sip                     12.9.0
PyQt5-stubs                   <IP_ADDRESS>
pyqtgraph                     0.12.1
PyQtWebEngine                 5.15.4
PyQtWebEngine-Qt5             5.15.2

I think I cleared the error on the previous check now, still not quite sure how to read those, in case there is any more issues let me know.

What needs to be done to make this release ready?
I don't quite understand why it keeps failing the checks, while this version works on my test PC.

@MdKquantum We enforce that all the code in plottr is type annotated: Specifically these are the errors that you get
plottr/__init__.py:102:36: error: Argument 1 to "module_from_spec" has incompatible type "Optional[ModuleSpec]"; expected "ModuleSpec"
plottr/__init__.py:104:31: error: Item "None" of "Optional[ModuleSpec]" has no attribute "loader"
plottr/__init__.py:105:13: error: Item "None" of "Optional[ModuleSpec]" has no attribute "loader"
plottr/plot/mpl/plotting.py:222:1: error: Function is missing a type annotation for one or more arguments

@wpfff Can we merge this after the branch has been updated? Or do further checks have to be passed?

code wise this looks OK, but i have maybe a functionality question :)
normally when you see these kinds of plots they're typically 'waterfall' plots, where the individual traces are offset vertically. here they're just on top of each other which created in a simple test i just ran a bit of a useless mess. would it maybe be good to add an offset?

an offset is useful, the challenge will then be to determine how to get this offset suitable for everything. I guess we could do an offset as the percentage of the maximum amplitude?

yes, something like that would probably make sense. the important thing for this feature to be universally useful is that most data looks clear, i think.
i could also imagine that there's a user option for that. this could maybe be included in the GUI as an option.

hey @MdKquantum , this PR is very interesting and useful but you had conversation with @wpfff above that hasn't resulted in any commits yet - do you intend to continue working on this PR ? :)

I'm currently in the middle of writing a publication which makes my time a bit limited. I'm hoping to get some more free time soon too finish this. The Slider and/or other changes on the GUI would require some more work from my side. Sorry for the delay

nothing happened here in a while, and this branch is very outdated. closing for now, can re-open if needed.


Memoria.FF6PR: Output log created, no useable features present in game

LogOutput.log
Everything worked well utilizing the ff5pr until yesterday, and today, cannot get memoria features to be useable in game now on FF6PR. Any help appreciated.
Step by step starting with installing the custom unity, then bes, then memoria combining the folders. no dice.

Hi. Remove BeepInEx folder first, and install all again.

attempted to remove the bepin folder first then install again, no changes unfortunately.
Have also tried removing the zip files and redownloading, then installing bep then memoria replacing files, no luck. At a complete loss

Checked on a clean install of FF5/6, BepInEx, Memoria - everything works fine.
Your logs also do not contain errors.
Do you use the latest version?
https://github.com/Albeoris/Memoria.FFPR/releases

Sorry to necro this, but I'm having the exact same problem and am wondering if you ever worked it out. Log shows patches load fine, Memoria receives events like OnDestroy(), but none of the patches actually execute.
The only two suspicious events are a windows update was installed and a game update was released. I uninstalled the windows update, and I replaced the game update with a backup of 1.0.6. Out of desperation I tried updating BepinEx to 6.0.0-pre1. Log attached.
LogOutput.log

@mrgrim , I just updated the mod to make it compatible with version 1.1.1.

This made my day thank you so much! :)


Bug/manager

Pull Request
Description

fix for nwp - load hour floor data
fix for pv
fix for sun and topographic : return xr.Dataset
added test for Manager to initialise data sources and make batches

Fixes #
How Has This Been Tested?
unitest tests

added one for nwp - load data not on hour

added one for manger too - initialise data source and get batches

[ ] No

[x] Yes

Checklist:

[x] My code follows OCF's coding style guidelines
[x] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have checked my code and corrected any misspellings

I will resolve this conflicts


pcluster with sge does not fully respect "-tc" flag.

Environment:

AWS ParallelCluster-2.6.0
Configuration file

cluster_template = default
update_check = true
sanity_check = true

[aws]
aws_region_name = xxxxxxxxxxxx

[cluster default]
base_os = ubuntu1804
cluster_type = spot
compute_instance_type = m4.4xlarge
compute_root_volume_size = 100
custom_ami = ami-xxxxxxxxxxxxxxxxxx
cw_log_settings = default-cw
ebs_settings = default-ebs
ec2_iam_role = xxxxxxxxxxxxxxxxxx
efs_settings = default-efs
encrypted_ephemeral = false
ephemeral_dir = /scratch
extra_json = { "cluster" : { "cfn_scheduler_slots" : "1", "ganglia_enabled": "yes" } }
initial_queue_size = 2
key_name = xxxxxxxxxxxxxx
maintain_initial_size = false
master_instance_type = t2.xlarge
master_root_volume_size = 100
max_queue_size = 200
placement = compute
placement_group = DYNAMIC
scaling_settings = default-scaling
scheduler = sge
shared_dir = /shared-master
tags = {"user" : "meeeee", "project" : "Research", "Name": "cluster-name"}
vpc_settings = default-vpc

[cw_log default-cw]
enable = true
retention_days = 120

[ebs default-ebs]
shared_dir = /shared-ebs
volume_type = gp2
volume_size = 100

[efs default-efs]
shared_dir = /shared-efs
efs_fs_id = fs-xxxxxxxxxx

[scaling default-scaling]
scaledown_idletime = 10

[vpc default-vpc]
vpc_id = vpc-xxxxxxxxxxxx
vpc_security_group_id = sg-xxxxxxxxxx
master_subnet_id = subnet-xxxxxxxxx
use_public_ips = true

Bug description and how to reproduce:
When a script is submitted as an array job but limiting concurrency via the "-tc" flag it spins up enough nodes to run each job, but runs the jobs with the appropriate concurrency.
E.g.
#!/bin/bash
# contents of remote.sh
echo 'this is a test'

qsub -N test -notify -t 1-100 -tc 5 remote.sh

will spin up 100 nodes then run 5 jobs at a time, leaving 95 nodes alive and waiting.
Additional context:
Nothing that I can think of.

Sorry for the late reply. I'm going to try to reproduce this issue today and get back with an update.

Ok so what's happening is that the current ParallelCluster scaling logic does not support the -tc option which means it tries to launch a number of nodes required to satisfy the entire array job. However SGE is not going to run more than 5 jobs at the time because of the specified constraint.
I'm going to mark this as an enhancement request.

Because we have announced that we will be deprecating support for SGE in the near-future (see: https://github.com/aws/aws-parallelcluster/wiki/Deprecation-of-SGE-and-Torque-in-ParallelCluster), we will not be performing additional enhancements specific to SGE.
I am going to close this issue. If you would like to request a similar enhancement for one of our other supported schedulers (Slurm or AWS Batch), please feel free to create a new issue.


Host extensions on GitHub pages

It would be great to host the extensions page on GitHub pages (and proxy requests via nginx on netsblox.org)

Done, now the extensions subdomain is just a proxy to https://netsblox.github.io/extensions/. The extensions are now only hosted in this repo.


Parse body when exception is returned

Currently we only get the body as string.
Would be nice to have it automatically parsed (or have a helper method) to make it possible to get the actual error message.

I think it's a good idea, but I don't 100% know how to make this work for every system. The message sabre/dav embeds is non-standard. At the very least we can provide a parser for these xml bodies so people have the option to parse it.

I was thinking of adding a utility method parseSabreException(body) but then it makes this lib depend/advertise Sabre.

Some of the xml response is actually standard. Forget how much though. Probably not the human-readable error messsage, which might be what you want =)

Looks like it's just the root element:
https://tools.ietf.org/html/rfc4918#section-14.5
However, some error responses do have standard elements in them, such as "supported-lock". But I don't know exactly how we could map this to something that is very useful yet. I think it's interesting though.

Perhaps we could add a map of 'elements to look for' and map them to specific exceptions. For instance, we could map "supported-lock" a specific LockTypeNotSupported exception, and so forth. But your use-case was the human-readable message.
For that I don't particularly mind depending on something sabre/dav specific, but then perhaps we should formalize the element better, perhaps as some sort of "spec" type think like:
http://sabre.io/dav/http-patch/
At the very least we give people a sane way to interop with this.

Talked to @noveens, he'll take care of this.

Closing this, in ownCloud we're now simply parsing the exception on the consumer side.


Make clicking on the Regenerate button reset the state

Not sure if this is intentional to have it keep state when you hit Regenerate but since changing any of the other data parameters reset the state I thought it was a bug.

As a user of this tool, I don't want to see this feature go. In particular, hitting regenerate during training allows a crude approximation of training with mini-batches (yes, there are better ways to accomplish this, but I'd rather see this fixed properly rather than removed). In general, more on-the-fly changes (e.g. #139) allows for more interesting experimentation for the curious without adding any extra complexity. I'd be happy to hear other points of view though!


[BUG] - ServiceBusSessionReceiver logs error when trying to get next session and none is available

Library name and version
Azure.Messaging.ServiceBus 7.7.0
Describe the bug
When creating a ServiceBusSessionReceiver using ServiceBusClient.AcceptNextSessionAsync, given that there are no available sessions and given that the user code catches and handles the ServiceBusException (ServiceTimeout) exception that signifies it, and error is still logged to Microsoft.Extensions.Logging and the Error level. This causes a large amount of log messages and extra cost in ApplicationInsights, and doesn't seem to warrant the Error level, since all that is required is to see if there is a next session available to process.
DEBUG log from catching the exception when no available sessions are found (user code)
[10:41:04 DBG] No unlocked sessions found: workflow-events/processing/processed-layer-input-changed/36e7dd97-ad58-4856-b476-baeb1b4d4757
Azure.Messaging.ServiceBus.ServiceBusException: The operation did not complete within the allocated time 00:01:00 for object receiver126. (ServiceTimeout)
 ---> System.TimeoutException: The operation did not complete within the allocated time 00:01:00 for object receiver126.
   at Microsoft.Azure.Amqp.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at Microsoft.Azure.Amqp.AmqpObject.OpenAsyncResult.End(IAsyncResult result)
   at Microsoft.Azure.Amqp.AmqpObject.EndOpen(IAsyncResult result)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location ---
   at Azure.Messaging.ServiceBus.Amqp.AmqpConnectionScope.OpenAmqpObjectAsync(AmqpObject target, TimeSpan timeout, CancellationToken cancellationToken, String entityPath)
   at Azure.Messaging.ServiceBus.Amqp.AmqpConnectionScope.OpenReceiverLinkAsync(String identifier, String entityPath, TimeSpan timeout, UInt32 prefetchCount, ServiceBusReceiveMode receiveMode, String sessionId, Boolean isSessionReceiver, CancellationToken
 cancellationToken)
   at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.OpenReceiverLinkAsync(TimeSpan timeout, UInt32 prefetchCount, ServiceBusReceiveMode receiveMode, String identifier, CancellationToken cancellationToken)
   at Microsoft.Azure.Amqp.FaultTolerantAmqpObject`1.OnCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
   at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
   at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.<>c.<<OpenLinkAsync>b__72_0>d.MoveNext()
--- End of stack trace from previous location ---
   at Azure.Messaging.ServiceBus.ServiceBusRetryPolicy.RunOperation[T1,TResult](Func`4 operation, T1 t1, TransportConnectionScope scope, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at Azure.Messaging.ServiceBus.ServiceBusRetryPolicy.RunOperation[T1,TResult](Func`4 operation, T1 t1, TransportConnectionScope scope, CancellationToken cancellationToken)
   at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.OpenLinkAsync(CancellationToken cancellationToken)
   at Azure.Messaging.ServiceBus.ServiceBusReceiver.OpenLinkAsync(CancellationToken cancellationToken)
   at Azure.Messaging.ServiceBus.ServiceBusSessionReceiver.CreateSessionReceiverAsync(String entityPath, ServiceBusConnection connection, ServiceBusSessionReceiverOptions options, String sessionId, CancellationToken cancellationToken, Boolean isProcessor)
   at Azure.Messaging.ServiceBus.ServiceBusClient.AcceptNextSessionAsync(String queueName, ServiceBusSessionReceiverOptions options, CancellationToken cancellationToken)
   at PremierCrop.Workflow.Framework.Events.Services.EventSessionManager.RunHandlerAsync(CancellationToken cancellationToken) in C:\dev\pcs\repos\PremierCrop\src\Workflow\PremierCrop.Workflow\Framework\Events\Services\EventSessionManager.cs:line 72

Duplicate ERROR level framework log
fail: Azure.Messaging.ServiceBus[79]
      An exception occurred while creating a ServiceBusSessionReceiver (Namespace 'pcs-live-jobs.servicebus.windows.net', Entity path 'workflow-events/processing/processed-layer-input-changed/36e7dd97-ad58-4856-b476-baeb1b4d4757'). Error Message: 'Azure.M
essaging.ServiceBus.ServiceBusException: The operation did not complete within the allocated time 00:01:00 for object receiver134. (ServiceTimeout)
       ---> System.TimeoutException: The operation did not complete within the allocated time 00:01:00 for object receiver134.
         at Microsoft.Azure.Amqp.AsyncResult.End[TAsyncResult](IAsyncResult result)
         at Microsoft.Azure.Amqp.AmqpObject.OpenAsyncResult.End(IAsyncResult result)
         at Microsoft.Azure.Amqp.AmqpObject.EndOpen(IAsyncResult result)
         at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)
      --- End of stack trace from previous location ---
         at Azure.Messaging.ServiceBus.Amqp.AmqpConnectionScope.OpenAmqpObjectAsync(AmqpObject target, TimeSpan timeout, CancellationToken cancellationToken, String entityPath)
         at Azure.Messaging.ServiceBus.Amqp.AmqpConnectionScope.OpenReceiverLinkAsync(String identifier, String entityPath, TimeSpan timeout, UInt32 prefetchCount, ServiceBusReceiveMode receiveMode, String sessionId, Boolean isSessionReceiver, Cancellatio
nToken cancellationToken)
         at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.OpenReceiverLinkAsync(TimeSpan timeout, UInt32 prefetchCount, ServiceBusReceiveMode receiveMode, String identifier, CancellationToken cancellationToken)
         at Microsoft.Azure.Amqp.FaultTolerantAmqpObject`1.OnCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
         at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
         at Microsoft.Azure.Amqp.Singleton`1.GetOrCreateAsync(TimeSpan timeout, CancellationToken cancellationToken)
         at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.<>c.<<OpenLinkAsync>b__72_0>d.MoveNext()
      --- End of stack trace from previous location ---
         at Azure.Messaging.ServiceBus.ServiceBusRetryPolicy.RunOperation[T1,TResult](Func`4 operation, T1 t1, TransportConnectionScope scope, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at Azure.Messaging.ServiceBus.ServiceBusRetryPolicy.RunOperation[T1,TResult](Func`4 operation, T1 t1, TransportConnectionScope scope, CancellationToken cancellationToken)
         at Azure.Messaging.ServiceBus.Amqp.AmqpReceiver.OpenLinkAsync(CancellationToken cancellationToken)
         at Azure.Messaging.ServiceBus.ServiceBusReceiver.OpenLinkAsync(CancellationToken cancellationToken)
         at Azure.Messaging.ServiceBus.ServiceBusSessionReceiver.CreateSessionReceiverAsync(String entityPath, ServiceBusConnection connection, ServiceBusSessionReceiverOptions options, String sessionId, CancellationToken cancellationToken, Boolean isProcessor)'

Expected behavior
Only actual Errors are logged, especially in noisy code paths. Specifically, when checking if there is an open session to handle, if there isn't one, do not produce error logs.
Actual behavior
Logs fill up with errors that are not errors
Reproduction Steps

Create Service Bus Queue with session enabled
Create ServiceBusClient
Request ServiceBusClient.AcceptNextSessionAsync from created queue

Environment
No response

Thank you for your feedback.  Tagging and routing to the team member best able to assist.


Two entities for alpha-cypermethrin?

CHEBI:39331 seems to be the same as CHEBI:39335. Do you agree?

It's the same situation as in #3969, so I guess you could also remove the CAS (67375-30-8) in CHEBI:39335?

CAS number for CHEBI:39335 has been removed.


Moving Sidebar items context menu options from sidebar class to items classes

What's the Problem?
In the SidebarControl.xaml.cs file, all the right-tap methods have a lot of variables specific to the current item (IsLocationItem, ShowProperties etc. ) that often repeat or are based on comparing item text, which decreases its flexibility and increases the size of the class code.
Solution/Idea
We could move these variables from sidebar methods to items directly.
After that every item will store text, icon ect. but also which context menu options will be shown in context menu.
Alternatives
N/A
Priorities

Capability
Priority

This proposal will allow developers to make future changes to sidebar items easier
Should

This proposal will allow to reduce code behind size
Must

Files Version
No response
Windows Version
No response
Comments
No response

@oleklukasiewicz Would you like to work on it?

@d2dyno1 Sure!


feat(frontend): Add animated three dots indicator for agent response

Need suggestions: https://opendevin.slack.com/archives/C06TL7AJMK2/p1715848998465029
[Created with Copilot Workspace]
Related to #1787
Implements an animated three dots indicator in the chat UI to signal when the agent is generating a response.

Adds a conditional rendering block within ChatInterface.tsx to display the animated three dots indicator using the ChatMessage component when the curAgentState is set to AgentState.LOADING.
The indicator appears in the chat UI immediately after a user sends a message and is removed when the agent's response is ready to be displayed, enhancing user experience by providing visual feedback during response generation.

For more details, open the Copilot Workspace session.

Updates the ChatInterface to render the ChatMessage component when the AgentState is RUNNING and adds custom spacing to the ChatMessage component.

Changes the condition in ChatInterface.tsx to render ChatMessage when AgentState is RUNNING instead of LOADING.
Adds a className prop to ChatMessage in ChatInterface.tsx to apply custom spacing, specifically a margin-top, ensuring consistent spacing with other messages.
Modifies ChatMessage.tsx to accept an optional className prop for custom styling, allowing for more flexible styling adjustments in the future.

For more details, open the Copilot Workspace session.

@yufansong Sorry I forgot to set this as a draft. Was using this issue to use the Copilot Workspace. I've updated the description to include the Slack message that briefly discusses possible alternatives to this issue. I don't think the 3-dots is one that will stick around

Looking forward to this feature! Hoping to enhance the user experience with the 3 dots indicator until we have a better option.

Stale


node-gyp always pulls headers from internet

After tracing through the code, I noticed that no matter what unless the --tarball flag is explicitly stated node-gyp will always attempt to pull the headers from the internet. The problem with this workaround is that if you try to install an existing npm module built with node-gyp, there is no means to specifying this flag.
It looks like fixing this would be as simple as adding a check if the file already exists in ~/.node-gyp for the architecture, or supporting an environment variable that specifies the path rather than a flag:
https://github.com/nodejs/node-gyp/blob/f6eab1f9e4b160b60b2736bb01a09c83785ba979/lib/install.js

IIRC npm will accept something like --node-gyp-tarball.

You can pass --nodedir=/path/to/node/headers to npm install, which should avoid downloading.
https://docs.npmjs.com/cli/install

The --nodedir=/path/to/node/source argument will allow npm to find the node source code so that npm can compile native modules.

What @richardlau said.  npm passes on any switches it doesn't consume itself to node-gyp.  npm install --tarball <..> probably works too.

Seeing this in a firewalled build:
yarn install v1.17.3
 $ node-gyp install
 gyp info it worked if it ends with ok
 gyp info using<EMAIL_ADDRESS> gyp info using<EMAIL_ADDRESS>| linux | x64
 gyp http GET https://nodejs.org/download/release/v10.14.1/node-v10.14.1-headers.tar.gz
 gyp WARN install got an error, rolling back install
 gyp ERR! install error
 gyp ERR! stack Error: connect ECONNREFUSED <IP_ADDRESS>:443
 gyp ERR! stack     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
 gyp ERR! System Linux 3.10.0-957.21.2.el7.x86_64
 gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "install"
 gyp ERR! cwd /home/theia-dev/theia-source-code
 gyp ERR! node -v v10.14.1
 gyp ERR! node-gyp -v v3.8.0
 gyp ERR! not ok

I can confirm that this works to prevent node-gyp from trying to download the headers:
NODE_VER=v10.14.1
curl -sSL https://nodejs.org/download/release/${NODE_VER}/node-${NODE_VER}-headers.tar.gz \
        -o /tmp/node-headers.tgz; \
npm config set tarball /tmp/node-headers.tgz
``

Now:

yarn install v1.17.3
$ node-gyp install
gyp info it worked if it ends with ok
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| linux | x64
10.14.1
gyp info ok
[1/5] Validating package.json...
[2/5] Resolving packages...
error Couldn't find package "@eclipse-che/workspace-client@latest" required by "<EMAIL_ADDRESS>on the "npm" registry.

So it's one step forward, one missing requirement in the npm offline cache back. :)

This should not be closed. The --nodedir is a workaround, not a proper solution to the problem.
A proper solution would be to fix node-gyp with an URL in .npmrc where to retrieve the node-headers archive.
This solution works for others like we use.
chromedriver_cdnurl=https://nexus.company.com/javascript/chromedriver
phantomjs_cdnurl=https://nexus.company.com/javascript/
sass_binary_site=https://nexus.company.com/javascript/node-sass

The node-gyp could have something like this, to avoid going out on the Internet to retrieve the node headers.

@DJViking You can use --dist-url to set the URL from which to download the headers. All node-gyp settings can be set via npm_config_ environment variables, so you should be able to set dist_url=https://... in your .npmrc file.

disturl in .npmrc works (there's an open issue about how the - is handled https://github.com/nodejs/node-gyp/issues/2250). You can also set tarball to point directly at a locally available headers tarball.

@nickboldt
Thank you, this fixed a sporadic issue I've been having for years now.
Is this documented anywhere? npm config set tarball

Does not appear to be in https://docs.npmjs.com/cli/v9/using-npm/config so 🤷

tarball and many other npm config settings were removed in recent versions of npm.

why not just put headers into npm package

Why not put the header inside the official docker images?


remove redundant c.browser.Connect()

#377 panic: Browser.Client and Browser.ControlURL can't be set at the same time
browser.client already initialised at https://github.com/projectdiscovery/katana/pull/428/files#diff-bb6d36c898cef9ab8fc51c0e7c843b608bdb1c68ceee5101752f0cc647476685R96

./katana -u https://test.team -hl -noi -scp /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome -cdd ~/temp

   __        __
  / /_____ _/ /____ ____  ___ _
 /  '_/ _  / __/ _  / _ \/ _  /
/_/\_\\_,_/\__/\_,_/_//_/\_,_/

                projectdiscovery.io

[INF] Current katana version v1.0.2-dev (development)
[INF] Started headless crawling for => https://test.team
https://www.test.team/js/jquery.fittext.js
https://www.test.team/css/page_specific/landing_themes/loading_spinner.css
https://www.test.team/css/page_specific/landing_themes/samir/style.css
https://www.test.team/odf/js/odf.js
https://www.test.team/
https://test.team
https://www.test.team/odf/js/%27%20+%20Odf.get%28%27loading_image%27%29%20+%20%27
https://www.test.team/odf/js/%27%20+%20Odf.get%28%27loading_image_black_bg_big%27%29%20+%20%27


Patched the way AfrondingWords were integrated into the DSL.

After this change you no longer have to explicitly import AfrondingsWords._ if  you already have org.scalarules.dsl.nl.grammar._ (See #58)

Looks good!

Whoopsie, accidentally closed it instead of merging. :P
Merged!


Feat: add reminder snoozing & show new expiry / mention count when editing reminder

Closes #2045.
Closes #2172.
Users can now "snooze" reminders, by pressing the "Snooze Reminder" button and then selecting a snooze duration from the dropdown menu that appears upon doing so.
I've tried to make this as resilient as I can, and have extensively tested it so there should hopefully not be any bugs 🤞.
Tested the "that's not your reminder to snooze" with help of @LiquidPulsar (thanks!).
This is my first attempt at using dpy2.0 features, so please feel free to give suggestions as to any possible improvements as well as reviewing the code as-is.
"Snooze Reminder" button:

After pressing the button:

After selecting snooze duration (both embeds in one message):

Jeez the review interface just completely broke on me, sorry about that.

Alright whatever I'm doing this manually, just in case this actually didn't work.
@JacobMonck @vivekashok1221 @ToxicKidz @Bluenix2 @onerandomusername please re-review.
Thanks!

It's been a while since this discussion was active but i really like the idea.
I just tested everything but for me there seems to be a problem when snoozing a timer for the second time. I get the option to snooze again and when i click it I can also select for how long i want to snooze but then it says "This interaction failed". Did this happen to any of you as well?

It's been a while since this discussion was active but i really like the idea. I just tested everything but for me there seems to be a problem when snoozing a timer for the second time. I get the option to snooze again and when i click it I can also select for how long i want to snooze but then it says "This interaction failed". Did this happen to any of you as well?
EDIT: The problem seems to be that once the first reminder is finished and you click snooze the second reminder is automatically deleted.
When pressing snooze for the first time it deletes the Reminder after 30s.

I'm not able to reproduce this. I get the trace log from pydis_core saying the reminder is being deleted, but it still shows when I use the remind list command (so hasn't actually been deleted from the site, only the internal pydis_core tasks) and I can successfully re-snooze (and keep re-snoozing).

2023-02-28 18:47:50 | bot.exts.utils.reminders | DEBUG | Deleting reminder #11<PHONE_NUMBER>78117890 has been reminded and didn't snooze).

I don't get this log message from the bot code, so don't really know what's going on there. I'll try and look further into it but am not particularly hopeful.

Closing in favor of recreating within a new PR.


DatePicker not setting the field value

Description
Explained behavior below
Steps to reproduce
Case 1:

field has a value, eg. day 1
click on field, calendar opens
click on another day, eg. 5 -> calendar closes, displayed field date is 5
save module's item -> saved value is 1, not 5 (also in request payload when save)

Case 2:

field has a value, eg. day 1
click on field, calendar opens
click on another day, eg. 5 -> calendar closes, displayed field date is 5
click on field, calendar opens
click on another day, eg. 10 -> calendar closes, displayed field date is still 5
save module's item -> saved value is 5

Expected result

Actual result

Versions
Twill 3.1.0

Did you update your Twill assets? This should be fixed with the build in 3.1.0

I did this:

Checked from an incognito window, and same issues.

Ok, sorry to hear that, it's been an annoying bug and I thought my fix was enough. At least I wasn't able to reproduce it anymore on my end. I'll try again.

Chrome on Windows

Form, Twill / ...Controller / getForm...
DatePicker::make()->name('first_reg')->label('1st reg.')->time24Hr()->withoutTime()->allowClear(),

now I realized the absurd "->time24Hr()->withoutTime()". anyway, I don't think this is the problem.

Closing as a dupe of #2237


Rendered cell rounds up large numbers in SQL query when copying/selecting

I was running a query the had results as bigints. The table cells rendered fine. But as I copied the number, I saw the last two digits were 00.
To make a reproduction easier, I have stripped my query and it is now:
a_number = 387_794_919_168_006_419

Ecto.Adapters.SQL.query!(
  Repo,
  "SELECT $1::bigint",
  [a_number]
)

The result should have been 387_794_919_168_006_419 but when I copy/paste it, it becomes 387_794_919_168_006_400
(The ,-s were slightly annoying but that's fine I guess, or maybe I could turn it off but I didn't know about it)
I am attaching screenshots below:
The rendered table (This is fine)

As I double clicked the cell to copy it

My bad. I was using an older version of kino_db. Closing this with apologies.

My bad. I was using an older version of kino_db. Closing this with apologies.


add a release binary cross-compiler builder container for Linux

resolves https://github.com/openziti/ziti-tunnel-sdk-c/issues/646

I'd use this image for other projects, can we rename it -- drop tunnel-sdk -- ziti-c-builder seems like a more generic name?

I'd use this image for other projects, can we rename it -- drop tunnel-sdk -- ziti-c-builder seems like a more generic name?

You wish to explore using a common container image for these four things, correct?

build C-SDK locally
build C-SDK in CI
build T-SDK locally
build T-SDK in CI

I'd use this image for other projects, can we rename it -- drop tunnel-sdk -- ziti-c-builder seems like a more generic name?

You wish to explore using a common container image for these four things, correct?

build C-SDK locally
build C-SDK in CI
build T-SDK locally
build T-SDK in CI

build zitify in CI
build zitify locally

the list may grow in the future

6. build zitify locally

I verified I can build zitify-pack with this container by overriding the entrypoint script. Assuming this container image were renamed more generically, would a new shell script in the zitify repo like build.sh with these contents meet your need for building zitify locally?
docker run --rm --volume "${PWD}:/github/workspace" --entrypoint='' openziti/ziti-tunnel-sdk-c-builder \
          bash -c 'rm -rf /github/workspace/build \
          && cmake -E make_directory /github/workspace/build \
          && cmake -DCMAKE_TOOLCHAIN_FILE="" -S /github/workspace -B /github/workspace/build \
          && cmake --build /github/workspace/build \
          && cmake --build /github/workspace/build --target zitify-pack'


Set media element

Pass media element to peer agent

:+1:
Don't forget to update the README!

Why is the default target branch master on this repo? Is it normal?
I originately meant to merge this branch in dev (it is based on dev)

@AxelDelmas we have set it master because its public, and as requested by @remijulien from a product pov its better that the first branch people get to when they reach the repo is master

👍 weird that these tests fail. they must be flaky. just re-ran the job once.

Ok then seems something is wrong with the Hls.js version compatibility that is currently pulled in. How come its not broken on dev branch though?

its broken on dev too. fixing it now ... @AxelDelmas

Closing, will merge in dev


Restructure the common field and Add Id field

Summary

Restructure the common field from person
Add general id that accepts a custom prefix
Add JUnit tests for id

Detail

from Figma, id must be 1-999 and prefix A - Z

Checks

[x] Link PR to issue
[x] Add Reviewer
[ ] Pass CI

Codecov Report

Merging #76 (8125c9b) into master (82c9f1c) will increase coverage by 0.08%.
The diff coverage is 78.26%.

@@             Coverage Diff              @@
##             master      #76      +/-   ##
============================================
+ Coverage     72.18%   72.27%   +0.08%
- Complexity      399      412      +13
============================================
  Files            70       73       +3
  Lines          1233     1255      +22
  Branches        125      129       +4
============================================
+ Hits            890      907      +17
- Misses          311      315       +4
- Partials         32       33       +1

Impacted Files
Coverage Δ

.../main/java/gomedic/logic/commands/EditCommand.java
97.05% <ø> (ø)

.../main/java/gomedic/logic/commands/FindCommand.java
100.00% <ø> (ø)

...in/java/gomedic/logic/parser/AddCommandParser.java
100.00% <ø> (ø)

...n/java/gomedic/logic/parser/FindCommandParser.java
100.00% <ø> (ø)

src/main/java/gomedic/logic/parser/ParserUtil.java
97.22% <ø> (ø)

src/main/java/gomedic/model/activity/Activity.java
0.00% <0.00%> (ø)

...c/main/java/gomedic/model/commonfield/Address.java
80.00% <ø> (ø)

src/main/java/gomedic/model/commonfield/Email.java
80.00% <ø> (ø)

src/main/java/gomedic/model/commonfield/Name.java
80.00% <ø> (ø)

src/main/java/gomedic/model/commonfield/Phone.java
80.00% <ø> (ø)

... and 7 more

Continue to review full report at Codecov.

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


vendor: update containerd/cri with 65830369b6b2b4edc454bf5cebbd9b76c1c1ac66 from master

Commit ID: 65830369b6b2b4edc454bf5cebbd9b76c1c1ac66 from master
Signed-off-by: Wei Fu<EMAIL_ADDRESS>compare diff is here https://github.com/containerd/cri/compare/dc7afe8fbe53db06c3f883f6f8c9895a9dfb2314...65830369b6b2b4edc454bf5cebbd9b76c1c1ac66

Codecov Report

Merging #4225 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #4225   +/-   ##
=======================================
  Coverage   38.34%   38.34%
=======================================
  Files          90       90
  Lines       12728    12728
=======================================
  Hits         4881     4881
  Misses       7181     7181
  Partials      666      666

Flag
Coverage Δ

#windows
38.34% <ø> (ø)

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 7d7104c...ae7cdc8. Read the comment docs.

LGTM


feat: add kernel/volume for create

Current dependencies on/for this PR:

main

PR #10

PR #11   👈

This stack of pull requests is managed by Graphite.

Merge activity

Nov 6, 11:50 AM: @richardcase started a stack merge that includes this pull request via Graphite.


Synthetic Control: allow for control of additional covariates

Currently synthetic control only allows for the control of 1 covariate i.e. the outcome variable of interest. The model could be fit on all the covariates with results given for the causal impact on each covariate separately.

Hi @SStock1. Could you elaborate a little more on what you mean here, perhaps with a link to an example. I was a bit confused by the second sentence, the wording makes it sound like you are referring to multiple outcome measures, but I'm not sure that's what you mean?

Hi, @drbenvincent
I was suggesting

Firstly allowing the inclusion of additional covariates in the design matrix.
Then potentially extending this to multiple outcome variables.

This would perhaps involve fitting the model to the entire design matrix which includes all of the covariates and then plotting and summarising the results for each outcome variable separately.
Hopefully that clears things up.

Thanks for the clarifications. I think for (2) this would not be high on the priority list, but we're not averse to a well-done PR with an example notebook with a clear use case.
In terms of (1) I'm perhaps still a bit fuzzy, but it may be a terminology thing.
Traditional synthetic controls are built from a weighted sum of control units. All of those control units enter in to the design matrix and are used.
Are you talking about adding other time series covariates into that weighted sum? If so, that is easy, you can just add those predictor variables into the model equation. Though I'm not sure how meaningful that would be without more info or a pointer to a paper, for example.
Or are you talking about a more elaborate model like this where you have $I$ control units like in normal synthetic control, but then also have $J$ additional linear predictor variables...
$$
\mu = \sum_i^I \beta_i \cdot control_i + \sum_j^J \gamma_j \cdot predictor_j
$$
The first term is the traditional synthetic control where the $\beta$'s sum to 1, and the second term are the extra covariates you mean with $\gamma$ being regular unconstrained regression coefficients.

Thanks for the reply. I believe what I was getting at was adding other time series covariates into that weighted sum as with traditional synthetic control. I have since forked the repo and implemented this.

Can't this be done by simply adding the term (corresponding to your desired column of data) to the model equation?

I think I see what you are getting at here.
I was talking about a model of the form:
\qquad \sum_{i=1}^k \beta_i \cdot x_i

where in some rows of the design matrix $\mu$ and $x_i$ are the outcome variable, in this case GVA, and in some rows of the design matrix $\mu$ and $x_i$ are for another covariate to control for such as number of employees. I'm starting to question whether it makes theoretical sense to do this though from your comments.

The goal of synthetic control is to create a synthetic version of the treated unit as a weighted sum of the untreated units.
I can't really say if putting other predictors in there makes sense or not, but it's certainly not vanilla synthetic control.
There isn't much info here about the problem being solved, so I can't say if you're on the right track or not. But I'd maybe suggest posting on the PyMC discourse about the problem to get input from people https://discourse.pymc.io/