feat: characterise the reverse of the characteristic polynomial of a matrix

bors merge

bors r-

bors merge

I think our CI is currently flaky and nothing is queued so I'm trying yet again.
bors merge

bors merge


File Manager: Select/copy table's text

What to do if you want to select and then copy to clipboard some data from File Manager's table? At the moment it will not let you, either by bringing context menu or triggering an action.

This functionality will be added to 18.30.


PTNFLY-1162 Remove blog icon from the footer on the new patternfly.or…

…g site
Removed blog icon

Simple change. Any takers?

:+1:


support WeChat bot

Signed-off-by: Gentleelephant<EMAIL_ADDRESS>

@wanjunlei would you help to review?


implement Hash for Antichain when T is Ord+Hash

This allows for e.g. indexing differential Descriptions by their lower
to stitch them together.

Looks good, and thanks!


Add example to change section key with accent key

To help users like
#30
#7

Thanks!

Thank you!


Rearranging Table Columns / Row doesnt work

I have follow data in the sheet

If I move Column F before C, and save. It wont save.

Resolved in v1.0.2


Some notes from another Debian lover.

I stumbled on this after checking back into your web site. Was really happy to see other Debian love. I'm not looking back and it's been over a year now.

Hell yeah! Thanks @jayarc =)
Next, I'm going to move this to its own file and link to it from the install instructions. Currently in the process of finalizing an update to the install instructions.


Update 0242-valid-anagram.py

used sorted list

Thank you for making a PR! But sorted list has a time complexity of O(n log n) compared to frequency map approach which is O(n). So for larger inputs, the original solution is more efficient.
That said, your approach is more concise and readable, so you could add it as an alternative solution or a comment in the code. Feel free to update the PR accordingly. Don't forget to format the code and let me know if you have any more questions!


fix: handle breaking change to vim.api.nvim_win_get_config (#1397)

This PR fixes #1397, and adds support for the NVIM v0.10.0 nvim_win_get_config() API change.
It prioritizes the new API by making it the default and turning the return values into the v0.10.0 format if the user is running an older version of NVIM.
I've tested this locally and it fixes all the issues with code actions for me on NVIM v0.10.0-dev-2393+g93c911e52-Homebrew .

there has util is_ten as condtion i do some check in layout you can check it.

there has util is_ten as condtion i do some check in layout you can check it.

I noticed that helper function while I was reviewing the rest of the codebase for any other possible v0.10.0-related bugs. However, I was worried about future-proofness because it only checks the minor version. That approach wouldn't work properly if/when NVIM goes to version 1.0, which is why I decided to check the data-type instead. However, if you'd rather me update the commit to use the is_ten function I'd be happy to do that.

in nightly the return type lua convert is fixed so when 0.10 released i decide remove support for 0.9* so we can just use nvim_win_get_config().col/row directly.


WXImageComponent: set imageview in completion block

bugfix

Apply image to imageview in completion block while downloading via url.

@xiayun200825 thank you for your contributions.
Can you give us some testcase through 'http://dotwe.org/vue' ?


Manage border radiuses on home route

Currently the elements on the home route have bad border radiuses, not connected or not in a standard creating a design mess.
This should be fixed by finding a design standard.

Done.


Not an issue but for everybody that has problems with Insightface

Download a FRESH ComfyUI portable
When installing (even when run as admin) use
python_embeded/python.exe -m pip install --user insightface
instead of
python_embeded/python.exe -m pip install insightface
(The --user part is lacking in the Instructions)

That's not the recommended way as this would install it "globally" for the user's given Python version (in the user directory) and can introduce hard-to-debug issues.
On windows depending on the portable comfy you use:
# for python 3.10
python_embeded/python.exe -m pip install https://github.com/Gourieff/Assets/raw/main/Insightface/insightface-0.7.3-cp310-cp310-win_amd64.whl
# for python 3.11
python_embeded/python.exe -m pip install https://github.com/Gourieff/Assets/raw/main/Insightface/insightface-0.7.3-cp311-cp311-win_amd64.whl
# for python 3.12
python_embeded/python.exe -m pip install https://github.com/Gourieff/Assets/raw/main/Insightface/insightface-0.7.3-cp312-cp312-win_amd64.whl


Add iceberg support

Description

Read only for now
Parquet only (there's some avro stuff we'll need to figure out too)
Initial pass should expose just an iceberg_scan function

Rationale

Breaking effects

Moving in progress as per https://github.com/GlareDB/glaredb/pull/1382 and tweets :tada:


how to use command instead of alt on mac osx?

i don't know how anyone can use emacs key bindings using option (alt) in mac keyboards!
how can we replace it to be used with left command key for the meta?

Here are the settings you need to adjust:
/* if true, this plugin uses the alt key for most of the emacs bindings */
"sbp_use_alt_bindings": true,
/* if true, alt+digit keys will insert as their normal characters */
"sbp_alt+digit_inserts": true,
/* if true, this plugin uses the super key for most of the emacs bindings */
"sbp_use_super_bindings": true,
You need to set the last one to true, like I have.
The others you can set or leave true. Since I am often forced to use ALT for meta/super in other situations, I decided to have both work at all times. Otherwise things can get very confusing.

okay thanks. is it possible to keep commands like cmd+s to perform saves?

You just need to put your own bindings in your own file.
So anything you don’t like from sublemacspro just override yourself.
Hope that makes sense.

okay thanks


[TASK] Generic list error 500

[2024-12-14 20:55:10] production.ERROR: Trying to access array offset on value of type null {"view":{"view":"/homepages/10/d912969182/htdocs/demo/resources/views/livewire/task-lines.blade.php","data":[]},"userId":1,"exception":"[object] (Spatie\LaravelIgnition\Exceptions\ViewException(code: 0): Trying to access array offset on value of type null at /homepages/10/d912969182/htdocs/demo/resources/views/livewire/task-lines.blade.php:154)
[stacktrace]

[2024-12-15 21:54:18] production.ERROR: Trying to access array offset on value of type null {"view":{"view":"/homepages/10/d912969182/htdocs/demo/resources/views/livewire/task-manage.blade.php","data":[]},"userId":1,"exception":"[object] (Spatie\LaravelIgnition\Exceptions\ViewException(code: 0): Trying to access array offset on value of type null at /homepages/10/d912969182/htdocs/demo/resources/views/livewire/task-manage.blade.php:231)
[stacktrace]

Tasks were used with a non-existent kanban status, probably an article with false tasks?
when recalling the technical breakdown, the values of the current status must be reset


Add development for Docker

How do you think about this PR?
Please review if you don't mind.
I'd like to use Docker and learn your vuex-modal.

Why do you need docker for development? I think it's too exaggerated for a small lib that have no environment specific dependencies.

Because I have not install npm on PC.
But, It's rare case, so you shold close this PR.
It's okay, I just wanted contribute!

OK, please install node.js/npm or create your own VM for that case 🙂
Thanks!


feature/force-token-refresh

Explain your changes
Generator pull request corresponding to this SDK issue.
Checklist

[X] I have read the “Pull requests” section in the contributing guidelines.
[X] I agree to the terms within the code of conduct.

🛟 If you need help, consider asking for advice over in the Kinde community.

@trunges21 please review this pull request as well. Thanks :+1:


Make mentors-guide gender neutral

Replacing all male pronouns with 'they' in line with Oxford acceptance of using 'they' for the singular form.

I approve.

@hanumanthk - Please also change:
https://github.com/code-together/mentorship/blob/master/mentors-guide.md
and check the other .md files.
Once he has learnt the basics, guide him through the project.

Remember, you are not expected to spend more than hour per week. Mentee should do everything, you should only help when he is stuck.

:+1:  @avinassh - Please merge this after the above changes are also done in this PR.

@rhnvrm That's the file I changed in this PR.
I checked the other files, they are all fine.


Project documentation

This exposes five functions, but a reference page with the docstrings/signatures would be helpful.

Fixed in #4


Add Crockford's Base32 support to @std/encoding OR Add the ability to use a custom dictionary

Is your feature request related to a problem? Please describe.
I currently in some projects use UUID columns in PostgreSQL to store ULIDs in a storage optimized format. I use @std/ulid to generate those ULIDs. However converting them to binary and then hex is done by copying @std/encoding/_base32_common.ts into my project and using it with the dictionary from @std/ulid/_util.ts. Considering the project already uses both packages, I'd appreciate an alternative solution to copying the files into my project.
Describe the solution you'd like
There are many solutions that cover my use case:

Adding a base32Crockford.ts just like we have base32.ts and unstable_base32hex.ts
Exposing the encode/decode methods from @std/encoding/_base32_common.ts
Since base32 and base32hex already seem to share 100% of the code and only differ on the dictionary, perhaps simply going from

export function decodeBase32(b32: string): Uint8Array {
  return decode(b32, lookup);
}

to
export function decodeBase32(b32: string, options: Base32Options = { lookup }): Uint8Array {
  return decode(b32, options.lookup);
}

Would do the trick for all 3 cases.
If going with option 3, adding constant export for the dictionaries such as:
export const BASE32_DICT: string[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".split("");
export const BASE32HEX_DICT:  string[] = "0123456789ABCDEFGHIJKLMNOPQRSTUV".split("");
export const CROCKFORD_DICT:  string[] = "0123456789ABCDEFGHJKMNPQRSTVWXYZ".split("");

would also be very helpful.
Describe alternatives you've considered
Right now I have @std/encoding code copied into my project. I could use other libraries by I'm trying to keep to @std as much as I can.

BTW, I'm happy to submit a PR if one of the solutions above would be acceptable/wanted.

I think solution 1 would be most aligned to the current direction of that package. (creating unstable_base32_crockford.ts and exposing it as @std/encoding/unstable-base32-crockford)
BTW I'm curious why you choose crockford base32 over other format.

I opened a PR https://github.com/denoland/std/pull/6238 for this, ended up going with unstable_base32crockford.ts instead of unstable_base32_crockford.ts in order to mimic the already existing unstable_base32hex.ts, can change if needed.

Out of interest: why is it 32hex and not 32_hex?

but we have ULIDs in @std/ulid and do not have v7s on @std/uuid so this seemed like the lightest lift.

I'm not sure you are aware or not, but UUID v7 is available as unstable API at @std/uuid/unstable-v7. https://jsr.io/@std/uuid/doc/unstable-v7
When this is available, does that work better than the combination of ULID (binary) + crockford base32?

fixed by #6238


Release candidate 2.0.0

Coverage remained the same at 100.0% when pulling ce2736f829d742835095a6962f9009cbf18ada0d on ReleaseCandidate-2.0.0 into 3d5459582cce5bae92de08b06da63661a97eebf5 on master.

Coverage remained the same at 100.0% when pulling 4c5041a5685e6c42504290497053bcb3b35c1347 on ReleaseCandidate-2.0.0 into 3d5459582cce5bae92de08b06da63661a97eebf5 on master.

Coverage remained the same at 100.0% when pulling d48bee63cb5ae13b28faad14a3a54fd35603dd7b on ReleaseCandidate-2.0.0 into 3d5459582cce5bae92de08b06da63661a97eebf5 on master.

Coverage remained the same at 100.0% when pulling d00c5f44f9dff5c24db2ff7b336cfb4cc0b25504 on ReleaseCandidate-2.0.0 into 3d5459582cce5bae92de08b06da63661a97eebf5 on master.


adding a workflow for autodeployment of specific PRs

Adding docker-pr-deploy workflow, adapted from: (https://github.com/fossasia/eventyay-tickets/blob/development/.github/workflows/docker-pr-deploy.yml) for purposes of testing within this repository.

Bravo!


Error message doesn't work right.

Version
/opt/logstash/bin/logstash --version
logstash 1.5.0

conf:
input {
  stdin {}
}

filter{
  geoip { source => "message" }
}

output {
  stdout { codec => rubydebug }
}

console (Send a dash "-"):
/opt/logstash/bin/logstash agent -f ~/test.conf -vvv
...{ Whole bunch of stuff I removed for brevity. }...
-
filter received {:event=>{"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, :level=>:debug, :file=>"(eval)", :line=>"40", :method=>"filter_func"}
IP Field contained invalid IP address or hostname {:field=>nil, :event=>#<LogStash::Event:0x794bc2a6 @metadata={}, @accessors=#<LogStash::Util::Accessors:0x5cd85e80 @store={"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, @lut={"host"=>[{"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, "host"], "message"=>[{"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, "message"]}>, @data={"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, @metadata_accessors=#<LogStash::Util::Accessors:0x5b02de9a @store={}, @lut={}>, @cancelled=false>, :level=>:error, :file=>"logstash/filters/geoip.rb", :line=>"112", :method=>"filter"}
output received {:event=>{"message"=>"-", "@version"=>"1", "@timestamp"=>"2015-06-05T01:44:49.078Z", "host"=>"vagrant-ubuntu-trusty-64"}, :level=>:debug, :file=>"(eval)", :line=>"46", :method=>"output_func"}
{
       "message" => "-",
      "@version" => "1",
    "@timestamp" => "2015-06-05T01:44:49.078Z",
          "host" => "vagrant-ubuntu-trusty-64"
}

Problem:
IP Field contained invalid IP address or hostname {:field=>nil,

It is returning the fieldas nil. Looking at the source code it always will. I don't see anywhere where @field is instantiated. Would it make more sense to have @source be the field it is using for the error message?
I ran into this because my IIS logs would sometimes put a - into the field I am doing the GeoIP filter on. When I looked in my logs, I had no idea what was going on, since :field was nil.

:facepalm: this should clearly be @source. thanks for spotting this. you can create a pr to change @field to @source if you want

Sure thing. Just a quick question: Do all the tests fail for you?
jhitze$ be rspec
Using Accessor#strict_set for specs
Run options: exclude {:redis=>true, :socket=>true, :performance=>true, :couchdb=>true, :elasticsearch=>true, :elasticsearch_secure=>true, :export_cypher=>true, :integration=>true, :windows=>true}
FFFFFFFFFFFFFFF

Failures:

  1) LogStash::Filters::GeoIP ASN db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:19:in `(root)'
     # ./spec/filters/geoip_spec.rb:19:in `(root)'

  2) LogStash::Filters::GeoIP ASN db "{"ip":"2a02:8071:aa1:c700:7984:22fc:c8e6:f6ff"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:25:in `(root)'
     # ./spec/filters/geoip_spec.rb:25:in `(root)'

  3) LogStash::Filters::GeoIP defaults "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:40:in `(root)'
     # ./spec/filters/geoip_spec.rb:40:in `(root)'

  4) LogStash::Filters::GeoIP defaults "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:53:in `(root)'
     # ./spec/filters/geoip_spec.rb:53:in `(root)'

  5) LogStash::Filters::GeoIP location field when longitude field is excluded behaves like an event with a [geoip][location] field should have a location field
     Failure/Error: plugin.register
     TypeError:
       can't convert nil into String
     Shared Example Group: "an event with a [geoip][location] field" called from ./spec/filters/geoip_spec.rb:166
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:150:in `(root)'

  6) LogStash::Filters::GeoIP location field when both latitude and longitude field are excluded behaves like an event with a [geoip][location] field should have a location field
     Failure/Error: plugin.register
     TypeError:
       can't convert nil into String
     Shared Example Group: "an event with a [geoip][location] field" called from ./spec/filters/geoip_spec.rb:171
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:150:in `(root)'

  7) LogStash::Filters::GeoIP location field when latitude field is excluded behaves like an event with a [geoip][location] field should have a location field
     Failure/Error: plugin.register
     TypeError:
       can't convert nil into String
     Shared Example Group: "an event with a [geoip][location] field" called from ./spec/filters/geoip_spec.rb:161
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:150:in `(root)'

  8) LogStash::Filters::GeoIP Specify the target "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:69:in `(root)'
     # ./spec/filters/geoip_spec.rb:69:in `(root)'

  9) LogStash::Filters::GeoIP Specify the target "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:82:in `(root)'
     # ./spec/filters/geoip_spec.rb:82:in `(root)'

  10) LogStash::Filters::GeoIP correct encodings with ASN db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:134:in `(root)'
     # ./spec/filters/geoip_spec.rb:134:in `(root)'

  11) LogStash::Filters::GeoIP correct encodings with ASN db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:137:in `(root)'
     # ./spec/filters/geoip_spec.rb:137:in `(root)'

  12) LogStash::Filters::GeoIP correct encodings with ASN db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:131:in `(root)'
     # ./spec/filters/geoip_spec.rb:131:in `(root)'

  13) LogStash::Filters::GeoIP correct encodings with ASN db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: let(:pipeline) { LogStash::Pipeline.new(config) }
     LogStash::ConfigurationError:
       Something is wrong with your configuration.
     # (eval):7:in `initialize'
     # ./spec/filters/geoip_spec.rb:140:in `(root)'
     # ./spec/filters/geoip_spec.rb:140:in `(root)'

  14) LogStash::Filters::GeoIP correct encodings with default db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:101:in `(root)'
     # ./spec/filters/geoip_spec.rb:100:in `(root)'

  15) LogStash::Filters::GeoIP correct encodings with default db "{"ip":"<IP_ADDRESS>"}" when processed
     Failure/Error: pipeline.instance_eval { @filters.each(&:register) }
     TypeError:
       can't convert nil into String
     # ./lib/logstash/filters/geoip.rb:66:in `register'
     # ./spec/filters/geoip_spec.rb:110:in `(root)'
     # ./spec/filters/geoip_spec.rb:109:in `(root)'

Finished in 1.06 seconds
15 examples, 15 failures

Bah. There is no vendor folder for the ASNDB. I guess I can fix that too. Is there some other way that you guys set up the test environment? Because I'm cloning just this repo and it the tests don't work. I had a similar issue with the logstash-output-riemann repo, but I assumed that was related to it having zero tests.

Annnnnd I found the rake file. >.<
Sorry for the stream of consciousness comments, lol.


Upgrade dependencies to Spring Boot 2.7.1

Upgrade to Spring Boot 2.7.1: https://github.com/spring-projects/spring-boot/releases/tag/v2.7.1
We did upgrade to Spring Boot 2.7.1, but we did not upgrade the dependencies.
See: #915

We should just ignore/ close this one and do directly

#1484

@de-jcup I already did this and it was reviewed by @winzj. Just forgot to close it.


Tiny self-toss to creeps can result into stucking each other.

Reported by MouJiaoZi:

As much as I try, I cannot reproduce it. Closing for now.


File Exist issue in FTPClient

Hi,
The file exist method  does not recognize  mixed forward and backward slash present in the path. How ever the same works while downloading and upload method.
For Example:
Path : \Host\App//file.txt
The above path works in OpenRead,Upload and Download method but fails to work in FileExists method

Are you using the latest version? FileExists has been updated in 17.0.0. I checked the code and it loosk okay. (GetFtpPath is called internally to cleanup the path)

Closing this issue since no response was given by OP. If you can answer my question I'll reopen it.


[ansible/artifactory] Fix for #307 artifactory service stopping

PR Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Title of the PR starts with installer/product name (e.g. [ansible/artifactory])
[ ] CHANGELOG.md updated
[ ] Variables and other changes are documented in the README.md

What this PR does / why we need it:
This MR makes the "Create artifactory service" task notify the "Restart artifactory" handler. Since the "Create artifactory service" task stops the artifactory service if it is running, this change ensures the service gets up and running again.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #307
Special notes for your reviewer:
In addition to this change, skipping the "Create artifactory service" task would be great if the service is already installed; however, I'm unsure how to check for that.

I have read the CLA Document and I hereby sign the CLA

recheck

Special notes for your reviewer: In addition to this change, skipping the "Create artifactory service" task would be great if the service is already installed; however, I'm unsure how to check for that.

** Try this:**
- name: Get service facts
  service_facts:

- name: Create artifactory service
  when: ansible_facts.services['artifactory.service'] is not defined

I have read the CLA Document and I hereby sign the CLA

Special notes for your reviewer: In addition to this change, skipping the "Create artifactory service" task would be great if the service is already installed; however, I'm unsure how to check for that.

Try this:
- name: Get service facts
  ansible.builtin.service_facts:

- name: Create artifactory service
  when: ansible_facts.services['artifactory.service'] is not defined

That worked, thanks! I tested on a new server without artifactory installed, and it installed as expected. Then when running the playbook again on the same server ansible noticed that the artifactory service was already installed and skipped the task.
However, I'd still like to keep the notify, since installing the service doesn't start it by default. Currently, it only works because we are relying on some other task to notify the restart handler, but there could be edge cases where they won't run.

You could add and notify a 'Start Artifactory' handler.


Header is messy

The new Pandas approach just build a dataframe from a LAS file -- unless you build the well yourself, in which case it's a dictionary object. The Header class is still there in header.py but I don't think it's used for anything. So it's polymorphic, and confusing.
Key philosophy: welly is not a representation of LAS files. That's what lasio is for.
Proposal: welly should regain its Header object, even if it simply stores everything in a DataFrame. The header object should have good LAS -> Header and Header -> LAS actions, but also be constructable and serializable by other means.

I had another go at fixing this yesterday, and wanted to capture some notes. Dealing with the current well header tricky for a few reasons:

There's no Header object to take care of the header interface, so you have to know how the header is structured.
The header is a DataFrame with no useful index, so you have to make complex queries (eg to find records matching a given section and mnemonic)
The header is basically a LAS file header, breaking the model of welly as a format-free representation. (lasio is a LAS file representation, but welly is supposed to be format-independent.)
The header code is spread out across well.py, utils.py and (maybe? not sure) header.py. The code in utils.py is accessed by curves and locations (I think), that's why it's in there (I think).

One thing I tried, which I thought would help, was using section and mnemonic as a MultiIndex in the header DataFrame (reasoning: the integer index is totally arbitray and not useful to users), but I couldn't quite get the various bits of machinery working with it. This would at least make the view of the header more useful.
I'd be interested to know what you think about this, @patrick-reinhard. I'm torn on whether the header needs to be useful in v0.5.0, but I think it is something I need to fix soon, because it's going to have consequences for plugging in dlisio.

Hi Matt,
Thanks for putting some thought into this. Sharing my thoughts:

There's no Header object to take care of the header interface, so you have to know how the header is structured.

I agree there should be interfacing possible for the header attribute of the well. You can now utils.get_header_item() and well.add_header_item(). These should be put into one place. I would propose placing it in header.py and adding wrapper methods on Well.

The header is a DataFrame with no useful index, so you have to make complex queries (eg to find records matching a given section and mnemonic)

Agreed, to me it makes sense to set mnemonic and/or section as the index.

The header is basically a LAS file header, breaking the model of welly as a format-free representation. (lasio is a LAS file representation, but welly is supposed to be format-independent.)

Header is currently a tabular frame, as I think it should be represented, because that's how you would find it in well reports or well data. A frame is a generic format but I agree it is indeed somewhat tied to LAS format because we copy 1:1 the names of the lasio output.
['original_mnemonic', 'mnemonic', 'unit', 'value', 'descr', 'section']
Those column names to make make sense, and we could parse any other header data (from dlisio) to that same format.

The header code is spread out across well.py, utils.py and (maybe? not sure) header.py. The code in utils.py is accessed by curves and locations (I think), that's why it's in there (I think).

All header related code is indeed in well.py, the utils.get_header_item() is in that place because utils.lasio_get() was there before. It makes sense to move it.
header.py is currently not used, imported or called by any of the code. The class, from my view, can be removed. The header related methods could be placed here.

One thing I tried, which I thought would help, was using section and mnemonic as a MultiIndex in the header DataFrame (reasoning: the integer index is totally arbitray and not useful to users), but I couldn't quite get the various bits of machinery working with it. This would at least make the view of the header more useful.

Agreed. If you want to push your branch I can have a look at that multindexing. I think this could be a change we can put in 0.5.1 if we get it right.

I'd be interested to know what you think about this, @patrick-reinhard. I'm torn on whether the header needs to be useful in v0.5.0, but I think it is something I need to fix soon, because it's going to have consequences for plugging in dlisio.

One last thought what I think is missing from the design of Header, it just being a dictionary, is the import/export reproducibility.  The Header constructor discards the unit, description and section upon loading, if you want to import a well, do things to it and export, your header will have lost useful information.


🚀 : Add filter for ages at "For You" Section

Is your feature request related to a problem? Please describe.
Yes, the current recommendation system sometimes suggests partners who are significantly younger, such as 15 years old, which raises concerns about potential misuse and safety.
Describe the solution you'd like
Implement an age filter in the "For You" section, allowing users to set a preferred age range for recommended partners. This will help users find partners within their desired age group and address safety and appropriateness concerns.
Describe alternatives you've considered

Restricting the minimum age of users to 18 to avoid issues related to underage interactions.
Implementing stricter moderation and safety checks for younger users.

Additional context
Allowing underage users to interact on the platform can lead to various issues. Implementing an age filter will help mitigate these risks and provide a safer environment for all users.

If you want to speed up the process of this issue, please send 🚀 as a reaction.

Based on our minimum age requirement of 13 and the guidelines you provided, here’s a structured age range for pairing users with language partners

For users aged 13 to 19: Recommend partners within a -5/+5 years range.

Example: A 15-year-old user should be paired with users aged 13 to 20.

For users aged 20 to 29: Recommend partners within a -7/+7 years range.

Example: A 25-year-old user should be paired with users aged 18 to 32.

For users aged 30 to 39: Recommend partners within a -7/+7 years range.

Example: A 35-year-old user should be paired with users aged 23 to 42.

For users aged 40 and above: Recommend partners within a -10/+10 years range.

Example: A 45-year-old user should be paired with users aged 35 to 55.

This approach ensures age-appropriate pairing while accommodating a broad range of interests and experiences.

    if (currentUserAge < 20) {
      minAge = Math.max(13, currentUserAge - 5);
      maxAge = currentUserAge + 5;
    } else if (currentUserAge < 30) {
      minAge = currentUserAge - 7;
      maxAge = currentUserAge + 7;
    } else if (currentUserAge < 40) {
      minAge = currentUserAge - 10;
      maxAge = currentUserAge + 15;
    } else {
      minAge = currentUserAge - 15;
      maxAge = currentUserAge + 50;
    }


How to remove the slash / from the src that imports the javascripts?

I exported my application and i'm serving it from an Apache server from a context /some/context.
Next is generating this Link tag in the HTML
<link rel="preload" href="/_next/2c31e04a-25d0-4955-b025-633ff48e3fbd/main.js" as="script">
The problem is that the page is looking for the javascripts from the root of the server. But it should look for it from /some/context.
How can I make Next remove this slash from the href so it will look for javascripts in the _next from this specific context?

Add https://github.com/zeit/next.js#cdn-support-with-asset-prefix set to /some/context.


Adding Dataset object for data management

Description
Dataset object used to manage access to the studies/dataset loaded into MONAI Label Server. Dataset object reads folder of images with no dataset.json and assumes all files are unlabeled, adding all files it finds in subtree of --studies path argument to the images category of objects.
Implemented
Dataset is currently used in the MONAI app class under save_label and next_image

tried with the changes.. next sample and save label works fine..
one suggestion.. for labelname lets have some part of it to represent image name while saving..
may be label_<image_file_name>.

Do you want me to update to list under images anything that starts with image_ and add label_ to saved labels?
My assumption was that perhaps if the dataset is entirely not annotated (missing a dataset.json) then anything found in the subtree is images. The reason I didn't put limitations on files names or paths is because from experience I know it's painful to update hundreds of files to match a certain format. We can discuss what's the best way, but your suggestions is good so we can do that short term.

have fixed name.. also added a small util to get the datalist (for training) over existing labels
https://github.com/SachidanandAlle/MONAI-label/commit/bbc665d6e6884e9f6a5981210e51b0797f824d8c


Manually backport style changes to 2.x

This PR manually backports the style changes made in https://github.com/opensearch-project/security/issues/2809
to the 2.x line.
Check List

[ ] ~New functionality includes testing~
[ ] ~New functionality has been documented~
[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@scrawfor99 Looks like you need to merge and resolve the conflicts - might want to block all 2.x commits until you get this one merged.


[ENH] - Deploy Nebari to GCP with OIDC-based authentication

Feature description
At one point this was possible but as I've worked on refactoring the integration tests, I keep running into this error:
[terraform]: │ Error: Error in function call
[terraform]: │
[terraform]: │   on modules/kubernetes/outputs.tf line 19, in output "kubeconfig":
[terraform]: │   19:   value = templatefile("${path.module}/templates/kubeconfig.yaml", {
[terraform]: │   20:     context                = google_container_cluster.main.name
[terraform]: │   21:     cluster_ca_certificate = google_container_cluster.main.master_auth[0].cluster_ca_certificate
[terraform]: │   22:     endpoint               = google_container_cluster.main.endpoint
[terraform]: │   23:     token                  = data.google_client_config.provider.access_token
[terraform]: │   24:   })
[terraform]: │     ├────────────────
[terraform]: │     │ while calling templatefile(path, vars)
[terraform]: │     │ google_container_cluster.main.endpoint is a string
[terraform]: │     │ google_container_cluster.main.master_auth[0].cluster_ca_certificate is a string
[terraform]: │     │ google_container_cluster.main.name is "pytestgcpkeiai-dev"
[terraform]: │     │ path.module is "modules/kubernetes"
[terraform]: │
[terraform]: │ Call to function "templatefile" failed:
[terraform]: │ modules/kubernetes/templates/kubeconfig.yaml:18,14-19: Invalid template
[terraform]: │ interpolation value; The expression result is null. Cannot include a null
[terraform]: │ value in a string template..
[terraform]: ╵

This modules/kubernetes/templates/kubeconfig.yaml:18,14-19 is complaining about a null value for $token which looks like the values is not being set properly.
Value and/or benefit
We prefer running our integration tests (CI) using OIDC rather than storing google credentials as GitHub secrets.
Anything else?
No response

@fangchenli while working on #2049, can you validate one way or another if this is still an issue?

@fangchenli while working on #2049, can you validate one way or another if this is still an issue?

I didn't see this error in #2049. The integration test passed before I removed the ci trigger for pr: https://github.com/nebari-dev/nebari/actions/runs/6427710733/job/17453788413

Okay nice! Thanks for sharing that 💯


Synthesis failed for Google.Cloud.Workflows.V1

Hello! Autosynth couldn't regenerate Google.Cloud.Workflows.V1. :broken_heart:
Please investigate and fix this issue within 5 business days.  While it remains broken,
this library cannot be updated with changes to the Google.Cloud.Workflows.V1 API, and the library grows
stale.
See https://github.com/googleapis/synthtool/blob/master/autosynth/TroubleShooting.md
for trouble shooting tips.
Here's the output from running synth.py:
2021-03-19 22:46:57,703 autosynth [INFO] > logs will be written to: /tmpfs/src/logs/Google.Cloud.Workflows.V1
2021-03-19 22:46:58,176 autosynth [DEBUG] > Running: git config --global core.excludesfile /home/kbuilder/.autosynth-gitignore
2021-03-19 22:46:58,180 autosynth [DEBUG] > Running: git config user.name yoshi-automation
2021-03-19 22:46:58,185 autosynth [DEBUG] > Running: git config user.email<EMAIL_ADDRESS>2021-03-19 22:46:58,188 autosynth [DEBUG] > Running: git config push.default simple
2021-03-19 22:46:58,192 autosynth [DEBUG] > Running: git branch -f autosynth-Google.Cloud.Workflows.V1
2021-03-19 22:46:58,196 autosynth [DEBUG] > Running: git checkout autosynth-Google.Cloud.Workflows.V1
Switched to branch 'autosynth-Google.Cloud.Workflows.V1'
2021-03-19 22:46:58,404 autosynth [DEBUG] > Running: git rev-parse --show-toplevel
2021-03-19 22:46:58,410 autosynth [DEBUG] > Running: git log -1 --pretty=%H
2021-03-19 22:46:58,415 autosynth [DEBUG] > Running: git remote get-url origin
2021-03-19 22:46:58,449 synthtool [ERROR] > Failed executing git checkout master:

error: Your local changes to the following files would be overwritten by checkout:
	google/cloud/dialogflow/v2/answer_record.proto
	google/cloud/dialogflow/v2/conversation.proto
	google/cloud/dialogflow/v2/conversation_profile.proto
	google/cloud/dialogflow/v2/participant.proto
Please commit your changes or stash them before you switch branches.
Aborting

Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 354, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 189, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 312, in _inner_main
    git_source.enumerate_versions(sources, pathlib.Path(temp_dir))
  File "/tmpfs/src/github/synthtool/autosynth/git_source.py", line 202, in enumerate_versions
    source_versions = enumerate_versions_for_source(git_source, temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/git_source.py", line 166, in enumerate_versions_for_source
    local_repo_dir = str(synthtool_git.clone(remote))
  File "/tmpfs/src/github/synthtool/synthtool/sources/git.py", line 85, in clone
    shell.run(["git", "checkout", "master"], cwd=str(dest), check=True)
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 39, in run
    raise exc
  File "/tmpfs/src/github/synthtool/synthtool/shell.py", line 33, in run
    encoding="utf-8",
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', 'checkout', 'master']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


Inspect snapshots in plottr

Since for now plottr is used as a plotting tool together with inspectr to browse through the database, it would be nice to have a small widget that would show the snapshot next to the plot of the run.

High on the list :)
i wanted to show the snapshot as an expandable tree in the bottom widget of the inspectr window.


VS Code getting stuck

Hello after update of VSCODE its getting stuck everytime.
when i try to write html
I am going to attach image its always saying starting extension and waiting for html document

VSCode Version: 1.30.0
OS Version: mac os X mojave

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

Does this reproduce with all extensions disabled?

@mjbvz no i disabled all extensions and its seems okay now i am trying to figure it out that which extension is actually doing this.

@mjbvz I figured it out when i install (live sass compiler) extension its installing (live server) extension as well and those extensions giving the issue. (Extension host terminated unexpectedly.).But they were installed before but was working perfectly.

Ok, please file an issue against that extension


[All] Quick questions & discussions

Opening this issue for any general questions we have for each other.

@timothyb0912 I have a question about refactoring, specifically for our project. I feel that in our case given that we have to encode a causal graph and our assumptions about the data generating process. In my opinion, it wouldn't make sense to create functions that ask for user input about the causal graph as well as the relationships between each of the nodes in our causal graph before said functions can run any simulation.
I think this means that we will always have a notebook that doesn't contain any input data or parameters, but which interactively generates this data/parameters (which is in this case will be a causal graph and any encoded assumptions in it). The output of this notebook would be a serialized causal graph object (not sure if we can do that) that we save as an output and load into other notebooks that we can use for simulation. Any thoughts about my logic here?

@bouzaghrane I actually disagree. I think it's very reasonable to keep the specification of the causal graph (the input) separate from the functionality that uses that graph for simulation and anything else. You would then specify how the input object will look.

@bouzaghrane and @hassanobeid1994
In my opinion, three problems have been encountered in the project so far.
I'll start with the first two in this comment and come to the third in a later comment on this issue.
Please reply to this comment and let me know what you all think of my proposal at the bottom.
Okay, the first two problems I've seen are that:

Falsification of our initially proposed causal graph was skipped.
Checking of our estimated model (aka the computational graph that corresponds to our causal graph) was skipped.

I don't bring this up to point fingers. Far from it. I think these two steps were skipped because (a) it's not immediately clear how the two of you should / could perform the steps, and / or (b) performing these steps seemed harder than the benefit that would be derived from them.
Moreover, I think that the VAST majority of papers (i.e. basically all parametric-model-based applied papers I've ever read) fail to do a thorough job of checking their causal graphs and fitted models.
Of course, my opinion on this topic is clear.
I think checking our causal and (estimated/final) computational graphs is the most important part of the project... In my opinion, it makes little sense to use a model or causal graph may be grossly violated by our data at hand.
To this end, I've added a still in progress literature review on falsification of one's causal and post-estimation computational graphs to the repo in Pull Request #30. Based on the papers I've seen so far (and based on work I've done on this for a past project), we already know enough to immediately make use of multiple techniques for falsifying our graphs.
Moreover, I fully believe that we can do a decent job of trying to falsify our models, and I believe we can do so very easily. That is, I believe we could make respectable and beneficial use at least three ways of falsifying and checking our causal graphs within a week of standard amounts of work (10 - 15hrs).
Accordingly, given:

what I feel is the great importance checking one's graphs
the big hole in the literature and practice around this topic
our ability to quickly do a good job of checking our causal graphs and model

I think we should pivot (once and for all) in terms of what we emphasize as our contributions and work for the conference.
I think we should focus on making the following points / contributions / demonstrations:

the fact that without a causal graph, we can't causally interpret any econometric models we have estimated.
that accounting for the unobserved confounding that is present in our datasets is possible and it does materially change our substantive conclusions / causal-effect estimates.
that coming up with a plausible causal graph is not trivial, and should be done with the aid of tons of computational and visual tools, some of which are very easy to use.

@bouzaghrane and @hassanobeid1994 here's the final problem that I've seen so far.
Hassan, you had an issue when trying to first apply the deconfounder:
It was not clear how one should specify the causal relations between the unobserved confounder / substitute confounder and the observed covariates / causes.
What you actually did was specify a set of relations that were heavily informed by domain area expertise---considerations of econometric principles such as avoiding mother logit problems.
Importantly, the model that you estimated has a causal graph that was (a) never explicitly drawn and (b) different from the one you initially wrote down.
So to state the issue clearly, we never specified the causal graph that corresponds to the identification strategy that we were using, which is a parametric model of latent mediation with unobserved confounding of the latent mediators.
Essentially, letting Z be an unobserved confounder,
Z --> X --> Utility_per_alternative --> mode_choice and Z --> Utility_per_alternative.
In my opinion we absolutely NEED to explicitly draw the causal graph such that is shows our identification strategy. Put another way, our causal graph and the computational graph of our model need to be compatible / encode-and-express the same causal relationships.
Drawing this graph should help us specify the final model in a defensible way as we'll check its causal graph first. Indeed the specification of the final model is the drawing of the graph.
In general I think having our causal and computational graphs agree is a fantastic thing. I'll list some reasons why (aka some ways we can benefit from this correspondence) below:

It shows how parametric, model-based causal inference explicitly "models the science" of a problem, that is, how model-based causal inference explicitly models the mechanisms of the system in question (aka the causal pathway between X and Y, the mode_choice in our case). Essentially, this shows how the models of Rubin, Pearl, and Heckman are all related.
It allows and invites us to make use of all the deep learning methods for:

estimating / inferring / optimizing the number and structure of mediating latent variables (aka the number of hidden layers and neurons in those layers, aka the underlying utility / GEV network structure?)
diagnosing and measuring over-parameterization of our latent variable model
detecting / testing for unobserved confounding between sets of variables by way of methods for estimating the "intrinsic dimension" of those variables.
and more.

It allows us to make connections with a bunch of different literatures. By designing the causal graph and then combining it with parametric models of all parts of this graph we're:

designing a hybrid choice model and paying much closer than usual attention to model validation / checking
designing a (potentially deep? and definitely causal) generative model of our dataset

It clarifies how we should causally interpret our choice models since we can now relay on all the graphical model tools from the causal inference literature for interpreting mediation models.

Hopefully all of that makes sense and is as incredibly exciting to you all as it is to me.
Lastly, note my insistence on us drawing our causal graphs to represent our identification strategy, aka drawing our causal graphs to include our models, essentially closes a loop with the graphical models literature. First there were graphical models for the following identification strategies: unobserved confounding, selection-on-observables, and instrumental variables. See Pearl's original 1995 biometrika paper: http://bayes.cs.ucla.edu/R218-B.pdf. Then recently, there were finally graphs drawn for econometric identification strategies such as reliance on monotonicity of effects, regression discontinuity and propensity score designs. See for example https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6117124/.
As of yet, I've not explicitly seen anyone draw graphs for identification via parametric modeling assumptions about unobservables. That's essentially what we're redoing: repurposing the neural network diagram for causal inference, haha. Note however that this is somewhat related to work in computer science on graphical models of preferences and utilities...https://arxiv.org/pdf/1302.4928.pdf
Alright, let me know your questions and thoughts!

Note to myself (and @bouzaghrane and @hassanobeid1994): I was clearly very excited about the idea (and still am): so excited I forgot to check to make sure I wasn't reinventing the wheel.
Choice modelers (aka Joan herself!!!) have long shown causal diagrams with utilities clearly shown as latent mediators. See Figure 1 of the Ben-Akiva, Walker et al chapter from 1997. Oye.
We should should show our causal graphs similarly, perhaps using plate notation to separately show the X_j and Utility_j for each alternative j.
That will be important when we show Hassan's latent confounders with one per (driving?) alternative, included in the plate rather than outside the plate as Wang and Blei might do.

@bouzaghrane I actually disagree. I think it's very reasonable to keep the specification of the causal graph (the input) separate from the functionality that uses that graph for simulation and anything else. You would then specify how the input object will look.

Ah got it!

@timothyb0912 to keep things simple, I think the function to initial the causal model should look this way:
def InitiateModel(x=None, y=None):
    """DOCTSRING TO GO HERE"""
    modelDictionary = {**x, **y}
    return StructuralCausalModel(modelDictionary)

This function obviously depends on the StructuralCausalModel module that we import in our .py file.
We can build additional functions that use functions from StructuralCausalModel to simulate or do whatever else we need to do, or we can use internal methods (the drawback is that we won't have detailed doctrings for them). Here is an example of how this would look working:
## Specify  the input of the causal graph in dictionary format
variables = {"HH_Size":
           lambda n_samples: np.random.normal(size=n_samples),
           "num_of_kids_household":
           lambda n_samples: np.random.normal(size=n_samples),
           "Autos_per_licensed_drivers":
           lambda n_samples: np.random.normal(size=n_samples),
           "Gender":
           lambda n_samples: np.random.normal(size=n_samples),
           "Travel_Distance":
           lambda HH_Size, n_samples: np.random.normal(size=n_samples),
           "Cross_Bay_Bridge":
           lambda Travel_Distance, n_samples: np.random.normal(size=n_samples),
           "Travel_Time":
           lambda Travel_Distance, n_samples: np.random.normal(size=n_samples),
           "Travel_Cost":
           lambda Travel_Distance, n_samples: np.random.normal(size=n_samples)
}
choice = {"Mode_Choice":
           lambda num_of_kids_household, Cross_Bay_Bridge,Travel_Time,
                   Travel_Cost, Travel_Distance, HH_Size,Autos_per_licensed_drivers,
                   Gender, n_samples: np.random.normal(size=n_samples)
}

## Initiate the model based on the specified structural form of each of the variables:

bike_model_ = InitiateModel(variables,choice)

## Sample data using StructuralCausalModel's internal methods (We can write our own methods to do the same thing if we want to add explanatory docstrings within them or do any additional things?)

bike_model_.sample(n_samples=100)

The output will be a dataframe of simulated data. I think that simplifying the structure of the input (causal graph) more than this will really result in much longer code (but of course stronger code). Let me know what you think @timothyb0912 @hassanobeid1994

@bouzaghrane I'll come back to your questions after the following diversion:
@bouzaghrane and @hassanobeid1994 I think I finally have a concise answer to Vij's (paraphrased) question of "what's the big difference between causal models and econometric models that account for factors like endogeneity and omitted variables?"
So far, the differences that I've seen are that:

Causal graphs are fundamental to causal models in all cases, even if there is no unobserved confounding. The causal interpretation of functionals of a given model parameter (e.g. changes in predicted probabilities under a policy) is dependent on the causal graph.
When dealing with observational data and unobserved confounding, causal inference methods emphasize (indicator-free) latent variable models to much greater extents than traditional structural methods in econometrics (including discrete choice methods). These models (e.g. the deconfounder) can substantively change one's results relative to standard models that ignore such unobserved confounding.
With causal inference methods, the causal graph is treated as more than a pictorial representation of one's assumptions. Testable (i.e. statistical) implications are derived from the graph itself (without parametric assumptions) and they are used to falsify / rule-out candidate causal graphs that appear to be inconsistent with one's data.

@bouzaghrane , your work addresses the first point.
@hassanobeid1994, your work addresses the second point.
Soon enough you'll both have work on checking your causal graphs, and at that point, I think we'll be in a pretty good position to put things together for June!

@bouzaghrane, here's my suggestions:

Open a pull request (and branch) and commit your work in progress code. It'll be easier for me to comment there as the refactoring comments will all be kept separate from other discussions.
The InitiateModel model function is probably not needed as its just a pass through function with no real operations inside. I would instead use the models folder in src to store various causal models. I would store each model in a separate file, each model being its own class. The various causal models that we (i.e. users) specify should all subclass some abstract_base_class that we define (for e.g. let's call it InputCausalModel). This abstract class will declare what input causal graphs should be / do. For example, we can specify that they all need to subclass StructuralCausalModel. The init methods of the specific causal graphs can essentially take no arguments and then  just use super to call the init method of StructuralCausalModel and pass in the needed input dictionary declaring how the variables are created.

@timothyb0912 We never got to this during the call, but I have a few questions about the  calc_probabilities function in choice_calcs . If it won't take much of your time, do you mind maybe sharing an example on how it would work? I am trying to use it to replace the functions we have in the notebook so far, but i just want to make sure I am understanding all the needed parameters correctly. If an example would take lots of time, please feel free to explain in whatever way would take the least amount of time. I understand some of the parameters, but not all. Thanks brother!

Ah, for sure. @bouzaghrane, check https://github.com/timothyb0912/pylogit/blob/master/tests/test_choice_calcs.py#L307 and the accompanying attributes added to self during in the setUp method for the test (https://github.com/timothyb0912/pylogit/blob/master/tests/test_choice_calcs.py#L30).
Let me know if things are still unclear!

@timothyb0912 @hassanobeid1994 I put together a little workflow that I want to discuss today. Here it is:
Here I try to illustrate the procedure for simulating data based on a causal graph.

Produce graphics of the causal models of each alternative based on the specification of the model from the asymmetric paper (8 total) to help in visualizing how each variable will be simulated.

Find distributions of demographic variables and alternative specific variables that have no parent in the causal graphs:

Input: a vector of values for each variable separately for each alternative, and a vector of of values for the demographic variables
Output: a nested dictionary, each nest representing an alternative and the final nest being demographic variables. Each of the nests will be a dictionary of distributions and parameters for each alternative specific variables, so we will have a distribution for per variable per alternative.

Run distributional regression on each alternative specific variables:

This regression will be done for each alternative specific variable, per alternative
Input: a vector of X and Y depending on the causal graph (theses Xs and Ys, for example travel distance and travel time will be from the original dataset)
Output: a nested dictionary, similar to the nested dictionary from step 2, storing each of the found distributions/parameters.

Simulate data for nodes with no parents in the causal graphs:

Input: distribution of the demographic variables and distribution of each of the alternative specific variables, for each alternative
Ouput: dataframe with length N and all demographic variables and alternative specific variables that do not have any parents
Each row in this dataframe will represent an observed individual, assuming that each individual has all alternatives available

Simulation of variables based on causal graph of each alternative:

For each alternative, simulate data for the nodes in the causal graph of its utility, except for its utility?
Input: distribution and parameters for nodes with no parents AND relationships based on regression from 3
Output: a simulated dataset of alternative specific variables and demographic variables, this will already take in a size N (from step 4) parents and will result in size N dataframes for each alternative

Simulation of availability of alternatives based on shares from original dataset

Output: dataset, in wide format, with availability of each alternative.

Convert data from wide to long

Input: Wide dataset
Output: Long format dataset

Simulate choices based on specified utilities

Input: Long format dataset without simulated choices
Output: Long format dataset with simulated choices

Estimate the model and recover parameters

Input: long format dataset with simulated choices
Output: Estimated models

Repeat steps 4-10 a number of times N_simulations and store outputs of each model

@hassanobeid1994 whenever you're done with the exams, can you edit the workflow to reflect what you wanted to see?

Closing due to lack of use.


⚠ Avatar API Endpoint has degraded performance

In 338ffaa, Avatar API Endpoint (https://avatar.roblox.com/v1/avatar-rules) experienced degraded performance:

HTTP code: 200
Response time: 1183 ms

Resolved: Avatar API Endpoint performance has improved in 8e48bcd after 19 minutes.


Origin does not update

Issue Type: Bug
It seems that the extension is a bit locked in when there are multiple repos in the workspace. It currently doesn't seem to change the repository no matter what. Even if the repository is closed.
Extension version: 0.5.1
VS Code version: Code - Insiders 1.33.0-insider (4039ea871879ef8f654f27df5c32d209104b3a44, 2019-03-29T10:48:35.896Z)
OS version: Darwin x64 17.7.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4980HQ CPU @ 2.80GHz (8 x 2800)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: enabledsurface_synchronization: enabled_onvideo_decode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
3, 4, 3

Memory (System)
16.00GB (0.10GB free)

Process Argv
-psn_0_1433950

Screen Reader
no

VM
0%

I'm having the same issue.
Extension version 0.6.0
VS Code version: 1.34.0-insider (0ab39f4148f242e7b0802330385fc99b4845aa31)
OS: Windows_NT x64 10.0.17763

This should have been fixed with https://github.com/microsoft/vscode-pull-request-github/commit/cc9b8de1617486c38f3c88d53fc559dcb758fc42, changing the selected repository in the source control viewlet should cause the extension to update


Fix context manager allowing to switch to 'No Task'

Issue
It's possible to have the Context Manager switch the AVALON_TASK to "No Task" whereas it should disallow that entry to be active task.
Reported here
What's changed?
Previously the selected task was retrieved from the view as the view.currentIndex() however that also allows non-selectable items to be active and returned. Now this is updated to solely using the actually selected rows from the view to ensure the Task is selected and not just the current.
This way you cannot switch to the Task, because the "No Task" item is unselectable in the model.

This could also be adapted to disabling the "set context" button altogether when there's no selected asset or task. Will adapt this PR.

Added the enable/disabled state toggle for the Apply button with https://github.com/getavalon/core/pull/451/commits/2620c2909a4943381e0a3f1c9aa99dc7f96be16b
Example:

Great work. Nice and concise. Merge when happy. 👍


 Finalizing the update matrix with relevant checks and error handling, Rewriting openglspriterenderer, and modifying debugrenderer

Added background
idiotproof and finalize the update transformation matrix with relevant error handling
fix is_dirty
added more sprite alignments
Seperate creation of vao and vbo from draw function
added a vector to store vao and vbo id (easy access to get relevant data to draw shape)
Move debugrenderer code to opengl (Need further discussion with rocky)

OK will remove then
On Wed, 2 Oct 2024, 12:09 am touchportyl, @.***> wrote:

@.**** commented on this pull request.
On MicroChess/assets/images/misc/missing_tex.png
https://github.com/WLVerse/FlexEngine/pull/58#discussion_r1783144260:
actl this missing tex is already generated by default, see
Internal_CreateDefaultTexture in opengltexture.cpp
—
Reply to this email directly, view it on GitHub
https://github.com/WLVerse/FlexEngine/pull/58#pullrequestreview-2340833746,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKC6YSYREYQC4VLKAUJ6YWLZZLCNJAVCNFSM6AAAAABPF4VXPGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGNBQHAZTGNZUGY
.
You are receiving this because you authored the thread.Message ID:
@.***>


Update Dockerfile

Requirements

Filling out the template is required. Any pull request that does not include enough information to be reviewed in a timely manner may be closed at the maintainers' discretion.
All new code requires tests to ensure against regressions

Description of the Change

Alternate Designs

Why Should This Be In Core?

Benefits

Possible Drawbacks

Applicable Issues

Thanks for your submission!
As the name of the file is named Dockerfile and Dockerfiles are used only for building Docker images, we feel that it is not necessary to specify the same thing in the comment.
Thanks again for your interest in Atom!


Installation not working using plugin manager

Describe the bug
When adding repo URL to KiCad 6.0.10
22:08:03: Failure when receiving data from the peer
22:08:03: Unable to load repository url
To Reproduce
Add repo by url https://raw.githubusercontent.com/Bouni/bouni-kicad-repository/main/repository.json

KiCad Version
Application: KiCad (64-bit)
Version: (6.0.10), release build
Libraries:
wxWidgets 3.2.1
libcurl/7.86.0-DEV Schannel zlib/1.2.13
Platform: Windows 11 (build 22621), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
Date: Dec 19 2022 21:23:04
wxWidgets: 3.2.1 (wchar_t,wx containers)
Boost: 1.80.0
OCC: 7.6.2
Curl: 7.86.0-DEV
ngspice: 38
Compiler: Visual C++ 1929 without C++ ABI
Build settings:
KICAD_USE_OCC=ON
KICAD_SPICE=ON

This is a known issue on Windows machines caused by the used libcurl. This happens for the download of official plugins as well. (The plugins itself, not the repo)

This should be fixed in the KiCad 6.0.11 Release, reading the release notes:
Windows
[Use older version of curl that works correctly]
https://www.kicad.org/blog/2023/01/KiCad-6.0.11-Release/

Fixed in Kicad 6.0.11 and 7.0.0-rc2-62-g971abcfc1a


Add AbstractKVStoreIntegrationTest and PostgresImpl Test

Based on #5
How?

PostgresIntegrationTest uses testcontainers to spin up docker containers for each test.
AbstractKVStoreIntegrationTest defines behavior that every impl of KVStore needs to follow. Different impl's can re-use the same abstract class to test their impl against it.
We will keep on adding tests to this as we add more impl details.

Files to review:

AbstractKVStoreIntegrationTest
PostgresBackendImplIntegrationTest

Reviewed and merged as part of another PR


rename vote-api with pipelines-vote-api to match with repo

Rename deployment and services to pipelines-vote-api to match with repo name

/lgtm


ns-train: error:  invalid choice: 'tetra-nerf'

I installed tetra-nerf as required with nerfstudio==0.2.2
but when I try to train the model I get the following

The required version for tetra-nerf is 0.2.0 so I dont understand why it seems like its not added with 0.2.2

How did you install nerfstudio?
Can you paste the result of pip list | grep nerfstudio

I installed nerfstudio with pip
(nerfstudio) mehi@DGX3:/nas1/mehi/tetranerf$ pip list | grep nerfstudio
nerfstudio                0.2.2

Perhaps @jkulhanek has an idea?

Sorry for my late response. The issue has been addressed in the tetranerf repo: https://github.com/jkulhanek/tetra-nerf/issues/19


Experiencing timeout error

I am seeing the following timeout after the script has been running for a few mins.
Only some of the available jpegs are being downloaded successfully as are *.md files.
Videos are being downloaded without their file extension although if I download manually through a browser they come with .mp4
I suspect that may be a separate issue from the Timeout.
Can anyone advise a method for increasing or avoiding the timeout?
pi@raspberrypi:~/mitene/mitene_download $ python mitene_download.py https://mitene.us/f/xxxxx
Traceback (most recent call last):
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 147, in <module>
    main()
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 143, in main
    loop.run_until_complete(async_main())
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 137, in async_main
    await gather_with_concurrency(4, *download_coroutines)
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 26, in gather_with_concurrency
    await asyncio.gather(*(sem_task(task) for task in tasks))
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 24, in sem_task
    await task
  File "/home/pi/mitene/mitene_download/mitene_download.py", line 43, in download_media
    async for chunk in r.content.iter_chunked(1024):
  File "/home/pi/.local/lib/python3.9/site-packages/aiohttp/streams.py", line 35, in __anext__
    rv = await self.read_func()
  File "/home/pi/.local/lib/python3.9/site-packages/aiohttp/streams.py", line 385, in read
    await self._wait("read")
  File "/home/pi/.local/lib/python3.9/site-packages/aiohttp/streams.py", line 304, in _wait
    await waiter
  File "/home/pi/.local/lib/python3.9/site-packages/aiohttp/helpers.py", line 721, in __exit__
    raise asyncio.TimeoutError from None
asyncio.exceptions.TimeoutError

Ah yes, there is a problem with videos without extension ( #4 ). I plan to take a look when I have  time.
I did not notice timeout problems, but I see that the library used for HTTP has a timeout of 5 minutes (
https://docs.aiohttp.org/en/stable/client_quickstart.html#aiohttp-client-timeouts ). I guess we can try to increase this, do you want to try #9 ?

Hi Jerome,  many thanks for looking at this. yes, i think that is worth
trying.
James
On Fri, 6 Oct 2023, 15:28 Jérome Perrin, @.***> wrote:

Ah yes, there is a problem with videos without extension ( #4
https://github.com/perrinjerome/mitene_download/issues/4 ). I plan to
take a look when I have time.
I did not notice timeout problems, but I see that the library used for
HTTP has a timeout of 5 minutes (
https://docs.aiohttp.org/en/stable/client_quickstart.html#aiohttp-client-timeouts
). I guess we can try to increase this, do you want to try #9
https://github.com/perrinjerome/mitene_download/pull/9 ?
—
Reply to this email directly, view it on GitHub
https://github.com/perrinjerome/mitene_download/issues/7#issuecomment-1750775898,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABOIVHAYQRZFI3CMADL76DX6AIPDAVCNFSM6AAAAAA5RXF5XWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONJQG43TKOBZHA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Thanks, actually I just published a new version on pypi with this fix. Let me know if that was not enough. Thanks a lot for all your comments


Hide RuneLite widgets

Nice plugin! My only issue is that it doesn't seem to hide anything generated by runelite itself. For example, prayer tooltip, cluescroll plugin, attack style, screenshot date:

Thanks for the suggestion!
I could not figure out a way to do this easily without just clearing all overlays (which seemed like a very bad idea) so I figured I just push it like this and revisit it later, I'll do some more research into this when I get time.


Control module authentication

Hi there. Does the control module (at https://github.com/arut/nginx-rtmp-module/wiki/Control-module) support authentication to prevent someone knowing the end point from, say, dropping a user's connection?
Thanks

https://www.nginx.com/resources/admin-guide/restricting-access/


[3923] Hide add degree details button on non-awaiting action records

Context
Before:

After:

Changes proposed in this pull request
As it says on the tin.
Guidance to review
Important business

~Does this PR introduce any PII fields that need to be overwritten or deleted in db/scripts/sanitise.sql?~
~Does this PR change the database schema? If so, have you updated the config/analytics.yml file and considered whether you need to send 'import_entity' events?~

 Missing degree: check why user sees this


Moves HTTP/3 outside the experimental section

What does this PR do?
This PR moves HTTP/3 outside the experimental section.
Motivation
HTTP/3 is stable
More

[ ] ~Added/updated tests~
[x] Added/updated documentation

Additional Notes

no-merge for now because alt-svc needs to be discussed further and taken into account.


Function to extract texture features

Description
sct_analyze_texture
This function will extract texture features from an image within a given mask (for example within SC segmentation or within lesions, ...). It will use the extraction of textures from sckit-image: http://scikit-image.org/docs/dev/api/skimage.feature.html#skimage.feature.greycomatrix
Output
Output will be a nifti file per texture metric. Metrics are:

contrast
dissimilarity
homogeneity
ASM
energy
correlation

Usage
sct_analyze_texture -i image.nii.gz -s segmentation.nii.gz -ofolder output_folder -param
Additional information
The outputs (texture maps) could be used in sct_extract_metric to extract the texture features in specific tracts/regions and/or by slice and vertebral levels.
sct_extract_metric could also be used to extract the textures features from a given mask (other than the atlas)

Usage:
DESCRIPTION
Extraction of GLCM texture features from an image within a given mask.
   It calculates the texture properties of a grey level co-occurence matrix (GLCM). The textures
    features are those defined in the sckit-image implementation:
   http://scikit-image.org/docs/dev/api/skimage.feature.html#greycoprops
   This function outputs one nifti file per texture metric (contrast, dissimilarity, homogeneity,
    ASM, energy, correlation) and per orientation called fnameIn_property_distance_angle.nii.gz, in
    the folder ./texture/

USAGE
sct_analyse_texture -i <file> -s <file>

MANDATORY ARGUMENTS
 -i <file>                    Image to analyse
 -s <file>                    Image mask

OPTIONAL ARGUMENTS
 -param <str>                 Parameters for extraction. Separate arguments with ":".
                                prop: <list_str> list of GLCM texture properties:
                                  contrast,dissimilarity,homogeneity,energy,correlation,ASM.
                                 Default=contrast,dissimilarity,homogeneity,energy,correlation,ASM
                                distance: <int> distance offset in pixel (suggested distance values
                                  between 1 and 5).
                                 Default=1
                                angle: <list_int> list of angles in degrees (suggested distance
                                  values between 0 and 179).
                                 Default=0,45,90,135

 -mean {0,1}                  1: Output a file averaging each metric across the angles
 -dim {ax,sag,cor}            Compute the texture on the axial (ax), sagittal (sag) or coronal
                              (cor) slices. Default value = ax
 -ofolder <folder_creation>   Output folder Default value = ./texture/
 -r {0,1}                     Remove temporary files. Default value = 1
 -v {0,1,2}                   Verbose: 0 = nothing, 1 = classic, 2 = expended Default value = 1

Outputs:
One nifiti file per {metric, angle} called fnameIn_metric_distance_angle.nii.gz (eg. t2_energy_1_0.nii.gz, t2_energy_1_90.nii.gz, t2_asm_1_0.nii.gz, t2_asm_1_90.nii.gz).
Additionnal file per metric (if -mean is 1): mean across angles (eg. t2_energy_1_mean.nii.gz, t2_asm_1_mean.nii.gz).
Terminal output:
python sct_analyse_texture.py -i /Users/chgroc/data/i1350/AIL/t2_sag_cerv.nii.gz -s /Users/chgroc/data/i1350/AIL/t2_sag_cerv_seg_manual.nii.gz -ofolder /Users/chgroc/data/i1350/AIL/texture/ -param prop=contrast:angle=0,45 -dim sag
Check folder existence...
/Users/chgroc/data/i1350/AIL/t2_sag_cerv.nii.gz

Create temporary folder...

Compute texture metrics...
Remaining time: 00:00:00.00 (15/15)                      Total time: 00:00:47.91

Mean across angles...
sct_image -i t2_sag_cerv_contrast_1_0.nii.gz,t2_sag_cerv_contrast_1_45.nii.gz -concat t -o t2_sag_cerv_contrast_mean.nii.gz
sct_maths -i t2_sag_cerv_contrast_mean.nii.gz -mean t -o t2_sag_cerv_contrast_mean.nii.gz

Save resulting files...

Done! To view results, type:
fslview /Users/chgroc/data/i1350/AIL/t2_sag_cerv.nii.gz /Users/chgroc/data/i1350/AIL/texture/t2_sag_cerv_contrast_1_45.nii.gz -l Red-Yellow -t 0.7 /Users/chgroc/data/i1350/AIL/texture/t2_sag_cerv_contrast_1_0.nii.gz -l Red-Yellow -t 0.7 /Users/chgroc/data/i1350/AIL/texture/t2_sag_cerv_contrast_mean.nii.gz -l Red-Yellow -t 0.7 &

Examples:
Analysis on axial slices:

Analysis on sagittal slices:

TODO:

[ ] Use a crop around the mask to speed up

Any comments/suggestion?
(Merci à Sara et Pascale pour leur aide précieuse!)

fantastic!!!  i would just replace sct_analyse_texture with sct_analyze_texture (US convention used in SCT).
thank you!

Meeting with George on Monday for review

could you please also add a test for this function? You can get inspiration from test_sct_propseg, test_sct_label_vertebral, test_sct_register_multimodal or test_sct_register_to_template
thank you!

[ ] new function: testing/test_sct_analyze_texture.py
[ ] test_sct_analyze_texture added to scripts/sct_testing.py
[ ] add t2_contrast_1_mean_ref.nii.gz to scripts/sct_testing_data/t2/

Changes (related to discussions during sct_meeting):

Flag names
-param --> -distance + -angle + feature
output *_mean by default
Usage reformulation


Invalid Byte Sequence

I'm running this command:
ruby /pathto/two-pass-transcode.rb /pathto/Westworld/Season\ 02/Westworld\ s02e03\ Virtù\ e\ Fortuna.mkv
and getting this output:
/pathto/two-pass-transcode.rb: invalid byte sequence in UTF-8
If I change the source file name to remove the ù and replace it with a u, then things work as expected.
transcode-video and other-transcode handle the filename without error.
I'm on macOS Monterey 12.6.5 on Intel if that matters.
BTW, it also fails for episode 7 as well: Westworld\ s02e07\ Les\ Écorchés.mkv
weaverm@iMac Super Scratch % ruby --version
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin21]

@weaverm My thanks to @ttyS0 for the assist, as usual! 👍
Yeah, the "ù" Virtù and the "É" and "é" in "Écorchés" are the causing the problems here. I don't think the issue is with HandBrakeCLI or ffprobe since both transcode-video and other-transcode handle the inputs fine. I'm not doing anything different with the inputs in two-pass-transcode.rb than I do in those other scripts so it's likely to be how they're invoked. Both transcode-video and other-transcode are installed via RubyGems so it's likely they are invoked differently. And may, in fact, be using different versions of Ruby depending upon how your system is configured.
Honestly, I have no idea who to even proceed with testing that theory.
BTW, I renamed both of those files years ago because I found that accessing them from SMB-volumes caused a similar problem. So my rule now is never use non-Latin-1 characters in filenames. 🤷♀

I have HandBrakeCLI as downloaded from HandBrake's website.
weaverm@iMac Super Scratch % HandBrakeCLI --version
[21:53:34] Compile-time hardening features are enabled
[21:53:34] hb_init: starting libhb thread
[21:53:34] thread 70000a037000 started ("libhb")
HandBrake 1.6.1

HandBrake has exited.

When I opened this bug, I had replicated it many times. It even persists across a system reboot.
I invoke my transcodes from a bash script. Nothing fancy, it just lets me keep a history of the exact parameters I used for a transcode since old ones are just commented out. I copy & pasted the offending lines from my bash script that I'm using for two-pass-transcode to a test script that is messy with lots of past experiments commented out.
And it worked as I would expect and without error.
I turned on show invisibles in BBEdit, figuring I had a weird control character in my 'production' script. But I didn't. It looked exactly the same. I copy & pasted back to my 'production' script from my test script and it failed again. Both (all) my scripts are the same bash environment.
#!/usr/bin/env bash
I made a new file and copy & pasted my entire 'production' script into it and it works fine.
I'm at a loss to explain the behavior. But life is short. I'm happy to move on if you are.

@weaverm Indeed, let us move on. Feel free to close this now. I am so sorry we weren't able to help you figure this out.


Question about account in MT4

Hi vdemydiuk,
Have a nice day~
Can I get Account info (Equity , margin, login ,...) by mtapi ?

I did


App launcher 4

@Kasper24 This is your widget, if you are done, go ahead and merge it. Everything looks fine to me.


[Hollow Knight] The map mod wrongly showing JunkPitChests as not randomized

Most options for randomizeX were put on random. RandomizeJunkPitChests rolled randomized, but showed as not randomized on the map mod.
RandomizeDreamers:               No
RandomizeSkills:                 Yes
RandomizeFocus:                  No
RandomizeSwim:                   Yes
RandomizeCharms:                 No
RandomizeKeys:                   No
RandomizeMaskShards:             Yes
RandomizeVesselFragments:        Yes
RandomizeCharmNotches:           Yes
RandomizePaleOre:                No
RandomizeGeoChests:              No
RandomizeJunkPitChests:          Yes
RandomizeRancidEggs:             No
RandomizeRelics:                 No
RandomizeWhisperingRoots:        No
RandomizeBossEssence:            No
RandomizeGrubs:                  No
RandomizeMimics:                 Yes
RandomizeMaps:                   No
RandomizeStags:                  Yes
RandomizeLifebloodCocoons:       Yes
RandomizeGrimmkinFlames:         No
RandomizeJournalEntries:         No
RandomizeNail:                   Yes
RandomizeGeoRocks:               No
RandomizeBossGeo:                No
RandomizeSoulTotems:             No
RandomizeLoreTablets:            No
Randomize Elevator Pass:         No
These are the settings that were rolled

https://archipelago.gg/dl_spoiler/5Zi21F0TRdS4l5ezZJExwA
Possibly the JunkPitChests are wrongly listed in the GeoChest category in the map mod instead of having their own category?
There were 2 teams on this seed (a competetive async) and both teams encountered this issue

This is a map mod bug, please open on the map mod repo https://github.com/ArchipelagoMW-HollowKnight/Archipelago.APMapMod


Suggestion

Really nice implementation!
Not am issue but just some suggestions.

SendMessageRequest::execute(CamooMessage $message, $addressee, array $auth = null): \Camoo\Sms\Response\Message

You can get the sms id just with $response->getId() or over property with $response->id

Wow, nice catch!!
Be sure that your suggestions have been taken into account.
Glad to see you like the implementation.
Feel free to suggest improvements and let's discuss them.


[Device Support Request] ZB-ONOFFPlug-D0005 Snartthings 2019 Plug

Problem description
Hello like to get the Smartthings 2019 plug working in ZHA properly power readings and on off works but voltage, current and energy kwh are not working.
Solution description
For all sensors to be reported correctly.
Screenshots/Video
Screenshots/Video
[Paste/upload your media here]

Device signature
Device signature
[{
  "node_descriptor": {
    "logical_type": 1,
    "complex_descriptor_available": 0,
    "user_descriptor_available": 0,
    "reserved": 0,
    "aps_flags": 0,
    "frequency_band": 8,
    "mac_capability_flags": 142,
    "manufacturer_code": 4456,
    "maximum_buffer_size": 82,
    "maximum_incoming_transfer_size": 82,
    "server_mask": 11264,
    "maximum_outgoing_transfer_size": 82,
    "descriptor_capability_field": 0
  },
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0051",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0702",
        "0x0b04",
        "0xfc82"
     ],
      "output_clusters": [
        "0x0003",
        "0x000a",
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "LDS",
  "model": "ZB-ONOFFPlug-D0005",
  "class": "zigpy.device.Device"
}]

Diagnostic information
Unable to add github claims makes comment too long.
Logs
Logs
[Paste the logs here]

Custom quirk
Custom quirk
[Paste your custom quirk here]

Additional information
No response

zha-beaf7d9f2a834e59a10ef970b0a16f39-LDS ZB-ONOFFPlug-D0005-239c10b5e50062107c46066e16b344f5.json


pieChart.Doughnut is not a function

I'm getting this error message (pieChart.Doughnut is not a function) but I can't understand why. So I did an example  of what I have, but it's working, which makes things more confused.
Here's what I got before the error, at my local:

... and here is where it's working:

So... does anyone know what am I missing?

I think that I get it.
I was using 2.1.3 at local and 1.0.2 at codepen.


Eliminate MethodCode

MethodCode abstraction was redundant with MethodCodeNode.
Fixes part of #68

:+1: Thanks for cleaning it up!


Tenant timeout loading

I have a big tenant thousands of IP addresses, hundreds of prefixes, vrfs, connections, devices, ... when I go to the tenant view it timeouts:
https://netbox.ae.local/tenancy/tenants/MYBIGTENANT/
I have been increasing timeout from default to several minutes, but it does not load anyways, it always timeouts, database and netbox server load is low:
Apache proxy error:
Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /tenancy/tenants/MYBIGTENANT/.

Reason: Error reading from remote server

supervisord netbox log error:
2016-08-03 09:28:33 [37301] [ERROR] WORKER TIMEOUT (pid:37306)

@alarido I suspect that the way we're annotating stats for the tenant in a single query is causing a database performance issue. I've rewritten the view to use a simple, discrete COUNT() for each statistic now. Could you try pulling down the develop branch and seeing if it solves the issue for you?

Should be fixed in v1.4.1 but please let me know if you still experience the problem.

It is fixed, thanks.


⚠ Bofrost.lu has degraded performance

In 7e9c2cc, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2312 ms

Resolved: Bofrost.lu performance has improved in b4e28c8 after 20 minutes.


Wait for element to be present

I am trying to wait for an element to be present before proceeding with taking the screenshot for the given element.
As of now I do this
setTimeout(async function() {
            const {root: {nodeId: documentNodeId}} = await DOM.getDocument();
            const {nodeId: bodyNodeId} = await DOM.querySelector({
                selector: '#login-submit',
                nodeId: documentNodeId,
            });
          const screenshot = await Page.captureScreenshot({format});
          ......
   }, delay);

And then I have to pass the delay explicitly and hence it adds the overhead. Is there some explicit api exposed where I can wait for the element to be present before going for captureScreenshot command.

Maybe using the DOM.childNodeInserted event? Give it a try and let me know.

One could argue that using childNodeInserted probably carries the same perf overhead issues as mutation events. I would try to avoid using it.
A slightly more friendly way would be to evaluate asynchronously in the page and use a mutationObserver + querySelector inside of there.
But..... This is all pretty awkward and tricky.. so until there was a higher level API for you to consume, I'd probably recommend sticking with your polling solution. haha. :)
cc @aslushnikov

Hi Guys, Seems there was no alternative solution to achieve this. So in the end, i end up writing something like this.
const getElementBySelectorWait = async (querySelector: string, DOM: any, parentNodeId: number, waitTime: number) => {
    let startTime = 0;
    let elementNodeId = await getElementBySelector(querySelector, DOM, parentNodeId);
    while (elementNodeId.nodeId === 0 && startTime < waitTime) {
        await sleep(10);
        startTime = startTime + 10;
        elementNodeId = await getElementBySelector(querySelector, DOM, parentNodeId);
    }
    return elementNodeId;
}

const getElementBySelector = async (querySelector: string, DOM: any, parentNodeId: number) => {
    try {
        return await DOM.querySelector({selector: querySelector, nodeId: parentNodeId});
    } catch (error) {
        console.log("Cannot find the element yet", error);
        return null;
    }
}

and calling these functions as
const {nodeId: formNodeId} = await getElementBySelectorWait('.form', DOM, documentNodeId, 2000);

Some aspects are still not clear that when failing to find the node, shall I return null or shall I return the {nodeId: 0}.  As far as I can see, when I waiting for the element to appear, I get {nodeId: 0} so probably I will also return that instead of null.

By following the advice of @paulirish, here's another attempt using a MutationObserver. You may want to tune it a bit but I think the general idea is pretty clear.
const CDP = require('chrome-remote-interface');

async function nodeAppears(client, selector) {
    // browser code to register and parse mutations
    const browserCode = (selector) => {
        return new Promise((fulfill, reject) => {
            new MutationObserver((mutations, observer) => {
                // add all the new nodes
                const nodes = [];
                mutations.forEach((mutation) => {
                    nodes.push(...mutation.addedNodes);
                });
                // fulfills if at least one node matches the selector
                if (nodes.find((node) => node.matches(selector))) {
                    observer.disconnect();
                    fulfill();
                }
            }).observe(document.body, {
                childList: true
            });
        });
    };
    // inject the browser code
    const {Runtime} = client;
    await Runtime.evaluate({
        expression: `(${browserCode})(${JSON.stringify(selector)})`,
        awaitPromise: true
    });
}

function demo() {
    setTimeout(() => {
        const foo = document.createElement('div');
        foo.id = 'foo';
        foo.innerText = 'foo';
        document.body.appendChild(foo);
    }, 3000);
}

CDP(async (client) => {
    const {Runtime} = client;
    try {
        // will add div
        await Runtime.evaluate({
            expression: `(${demo})()`
        });
        // wait for the element to be present
        await nodeAppears(client, 'div#foo');
        console.log('OK');
    } catch (err) {
        console.error(err);
    } finally {
        client.close();
    }
}).on('error', (err) => {
    console.error(err);
});

@saurabh2590 I think I can close this as you now have a few alternatives approach.

Obviously, it's a wrong example~
No matter what you specify the second parameter in the function nodeAppears, it will show ‘OK’ immediately

@supersky07 I don't think so... care to elaborate? And if your code is different from the above please post it.

@cyrus-and  I just replace 'foo' with 'bar', it will show 'OK'. Well, I'll try again.

@supersky07 if I replace div#foo with div#bar, the script just doesn't terminate, there must be another problem.

@cyrus-and  thank you~ I will try again. And give you a feedback some time.

@cyrus-and So sorry, entirely my problem. When I change to Canary, it turns out the right answer.

there is error when I run the code like this:
`const CDP = require('chrome-remote-interface');
const argv = require('minimist')(process.argv.slice(2));
const file = require('mz/fs');
const timeout = require('delay');
async function nodeAppears(client, selector) {
// browser code to register and parse mutations
const browserCode = async (selector) => {
const result = new Promise(async (fulfill, reject) => {
const {DOM} = client;
let startTime = 0;
const {root: {nodeId: documentNodeId}} = await DOM.getDocument();
const getElementBySelectorWait = async (querySelector, DOM, parentNodeId, waitTime) => {
let startTime = 0;
let elementNodeId = await getElementBySelector(querySelector, DOM, parentNodeId);
console.log('0000000 elementNodeId', elementNodeId);
while (elementNodeId.nodeId === 0 && startTime < waitTime) {
await timeout(10);
startTime = startTime + 10;
elementNodeId = await getElementBySelector(querySelector, DOM, parentNodeId);
console.log(startTime, 'elementNodeId', elementNodeId);
}
return elementNodeId;
}
const getElementBySelector = async (querySelector, DOM, parentNodeId) => {
try {
console.log(querySelector, parentNodeId);
return await DOM.querySelector({selector: querySelector, nodeId: parentNodeId});
} catch (error) {
console.log("Cannot find the element yet", error);
return null;
}
}
        const result = await getElementBySelectorWait(selector, DOM, documentNodeId, 5000);
        if (result.nodeId && result.nodeId !== 0) {
            console.log('find ', selector);
            fulfill();
        } else {
            console.log('not find ', selector);
            reject();
        }
    });
    return result;
};
// inject the browser code
const {Runtime} = client;
try {
    await Runtime.evaluate({
        expression: `${browserCode(selector)}`,
        awaitPromise: true
    });
} catch (err) {
    console.log('err', err);
}

}
async function load(url) {
console.log('load(url) called');
const target = await CDP.New({port: '9222'});
const client = await CDP({target});
// const client = tab;
const {Network, Page, DOM} = client;
await Promise.all([Network.enable(), Page.enable(), DOM.enable()]);
const obj = new Promise((resolve, reject) => {
    let failed = false;
    Network.loadingFailed(() => {
        failed = true;
        console.log('Load(url) Network.loadingFailed');
        reject(new Error('Load(url) unable to load remote URL: ' + url));
    });
    Page.navigate({url});
    Page.domContentEventFired();
    Page.loadEventFired(() => {
        if (!failed) {
            console.log('Load(url) resolved');
            resolve({client: client, target: target});
        }
    });
});
return obj;

};
async function getPdf(url, output) {
const {client, target} = await load(url);
const {Page} = client;
console.log("targetID: " + target.id);
try {
    await nodeAppears(client, '.question-item-dom');
} catch (err) {
    console.log('err', err);
}
// https://chromedevtools.github.io/debugger-protocol-viewer/tot/Page/#method-printToPDF
const {data} = await Page.printToPDF({
    landscape: false,
    scale: 1,
    printBackground: false,
    marginTop: 0,
    marginBottom: 0,
    marginLeft: 0,
    marginRight: 0,
    paperWidth: 8.267716,
    paperHeight: 11.708335
});

await console.log('output is', output);
await CDP.Close({port: 9222, id: target.id}); // here's you need to pass target id

const buffer = new Buffer(data, 'base64');
await file.writeFile(output, buffer, 'base64');

}`
throw err:
load(url) called Load(url) resolved targetID: bb24b5f8-1fcd-4b74-83e1-548c4a864259 .question-item-dom 1 0000000 elementNodeId { nodeId: 0 } .question-item-dom 1 10 'elementNodeId' { nodeId: 0 } .question-item-dom 1 output is ./test.pdf 20 'elementNodeId' { nodeId: 0 } .question-item-dom 1 Cannot find the element yet Error: not opened     at WebSocket.send (/home/zxy-test/app/service/ZXY-wrong-topic/node_modules/ws/lib/WebSocket.js:355:18)     at Chrome.enqueueCommand (/home/zxy-test/app/service/ZXY-wrong-topic/node_modules/chrome-remote-interface/lib/chrome.js:124:16)     at /home/zxy-test/app/service/ZXY-wrong-topic/node_modules/chrome-remote-interface/lib/chrome.js:86:28     at Chrome.send (/home/zxy-test/app/service/ZXY-wrong-topic/node_modules/chrome-remote-interface/lib/chrome.js:85:16)     at Object.handler [as querySelector] (/home/zxy-test/app/service/ZXY-wrong-topic/node_modules/chrome-remote-interface/lib/api.js:32:23)     at getElementBySelector (/home/zxy-test/app/service/ZXY-wrong-topic/new.js:65:38)     at getElementBySelectorWait (/home/zxy-test/app/service/ZXY-wrong-topic/new.js:56:43) 30 'elementNodeId' null (node:19338) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: Cannot read property 'nodeId' of null (node:19338) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Why is elementNodeId the null at the third run?  Why is elementNodeId the null at the third run?

@vichajser as you can see "Error: not opened" is a quite common error that happens when a connection is used after close.
Anyway here you're mixing Node.js and browser code in nodeAppears which is obviously wrong, e.g., DOM doesn't belong to the browser context.
Also please try to avoid bumping old issues if you're not reporting something strictly related (you've completely rewritten nodeAppears here!) especially when several other people are subscribed to the updates; file a new issue instead.


Add Rohini Joshi to contributors list.

Add Rohini Joshi to contributors list.

@rohini21, I'm quite elated about your pull request. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a pull request and learned that I merged it?
We’ve recently added Facebook share and tweet feature to our web app. Could you please go to https://roshanjossey.github.io/first-contributions/#social-share and share your first contribution to open source?
Also, check out projects with easy issues while you’re there.