Release v0.10.0

It has been quite a while since the last scheduler release. I am proposing that descheduler release v0.10.0 is created in the near future. See below list of suggested pull requests that I think should be merged before the v0.10.0 release is created.

[x] Implement --descheduling-interval CLI option https://github.com/kubernetes-sigs/descheduler/pull/221
[x] Automated Container Image Builds https://github.com/kubernetes-sigs/descheduler/pull/217
[x] Automated Container Image Builds Part 2 https://github.com/kubernetes/test-infra/pull/16022
[x] Switch to Go modules https://github.com/kubernetes-sigs/descheduler/pull/216
[x] Documentation updates https://github.com/kubernetes-sigs/descheduler/pull/208
[x] Build automation clean up https://github.com/kubernetes-sigs/descheduler/pull/236

Additionally this would be the first release where an official container image for descheduler can be pushed to gcr.io.
Normally I would create a milestone for tracking this stuff, but I don't have access to create/update milestones in the repo. So this is the best alternative I could come up with.

@ravisantoshgudimetla @aveshagarwal @damemi let me know if you think this is a reasonable proposal.
Also ...
I think I can help out by reviewing #216 in the near future and I will also sign up for writing the release notes for v0.10.0. Let me know if there is anything else I could do to help with this.

Thanks @seanmalloy, definitely +1 to this.
It would also be nice if we could start tagging regular releases to coincide with our bumps for kubernetes versions. Maybe even use a matching version scheme like v0.10.18->k8s 1.18, etc.

Rough draft of release notes. I'll probably review and revise these at least one by time myself, but if anyone else has any suggestions that would be cool too.
New Features

Users can specify pods that are safe to evict using annotation descheduler.alpha.kubernetes.io/evict - GH-186
Create k8s events when pods are evicted - GH-183
New strategy RemovePodsViolatingNodeTaints - GH-175

Bug Fixes

Fix duplicate strategy to also take namespace into account - GH-156
Spelling fix - GH-178
Fix typos in k8s yaml files - GH-193, GH-201

Others

Enable golangci-lint - GH-149
Setup official Google Container Registry descheduler container image - GH-160, GH-173
Improve duplicate strategy unit tests - GH-162
Enable e2e tests in TravisCI - GH-169
Migrated to kubernets-sig GitHub organization - GH-182
Clean up golint - GH-190
Switch from glog to klog - GH-192
Bump k8s dependencies to v1.17 - GH-204
Update to Go 1.13 - GH-209
Update k8s yaml files to use priorityClassName instead of critical-pod annotation - GH-213

These release notes look good. #221 just merged so you can add that to the notes and cross it off in your original post. I'd like to get everything else in your first post finished too, hopefully before the 1.18 release of k/k

@seanmalloy release notes looks really good. thanks.

I agree with @damemi and @aveshagarwal on the release notes. This is really good. Thanks for working on this @seanmalloy

Just one more PR to review and merge for the v0.10.0 release, https://github.com/kubernetes-sigs/descheduler/pull/208.
Here is a gist with the updated release notes. This should provide an easy copy and paste for the person that creates the release.
https://gist.github.com/seanmalloy/3ae02ebdad8519db0d2dddb3f36bb471

thanks a lot @seanmalloy and @damemi for your work on this release.
Would like to know your thoughts what you think if instead of making 0.10.0, we release 1.0.0?

I would like to get this to 1.0.0 as soon as we can, but I think we should first promote our APIs out of alpha before bumping to a major version release. Wdyt?

I agree with @damemi. We have a some work to do before we are ready for v1.0.0. I think for now it would be best to stick with v0.10.0.

ok sounds good. Please let me know if we are ready and i will cut a release v0.10.0.

would like to get this PR: https://github.com/kubernetes-sigs/descheduler/pull/236 in before we cut a release.

@aveshagarwal I'm not aware of anything else that needs to be merged prior to cutting the release. Let me know if you need any help with the release process.

@seanmalloy as per the release process doc and semi auto version, i have completed first 3 steps. Feel free to go for other steps. Let me know if my help is needed.

@aveshagarwal here is the PR for step 4 ... https://github.com/kubernetes/k8s.io/pull/570.

@aveshagarwal here is the PR for step 4 ... kubernetes/k8s.io#570.

i have lgtm'ed, i am not sure if i can /approve too in that repo.

i have lgtm'ed, i am not sure if i can /approve too in that repo.

@aveshagarwal  you have been added to the OWNERS file here, so for future releases both you and @ravisantoshgudimetla will be able to approve descheduler image promotions.
Step 4 is done the image is available at us.gcr.io/k8s-artifacts-prod/descheduler/descheduler:v0.10.0.
@aveshagarwal you can go ahead and complete the last two release steps, 5 and 6.

@seanmalloy thanks a lot for your help. I have published v0.10.0 now so step 5 done now. Feel free to to go for step 6.

@aveshagarwal I'll do the 6th and final step. Thanks for your help?

FYI the release notes at https://github.com/kubernetes-sigs/descheduler/releases are incorrect as they state the image as us.gcr.io/k8s-artifacts-prod/descheduler:v0.10.0 and not us.gcr.io/k8s-artifacts-prod/descheduler/descheduler:v0.10.0.

@aveshagarwal I had the incorrect image location in the release notes. Sorry about this. Can you edit the release notes to change the location of the container image to be us.gcr.io/k8s-artifacts-prod/descheduler/descheduler:v0.10.0?
https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.10.0
I completed step 6(send email). I'll close out this issue once the typo is fixed in the release notes.

@seanmalloy fixed the path.

/close
Thanks for your help @aveshagarwal!


Color Issues inside PHP classes

I noticed some color issues with PHP classes where accessing a property has the same color as "$this->".

Dang, sorry about that. I'll get it fixed in the next release.

Thanks for this quick response and beautiful theme.


Columns in Series Selector and in Data Table

We discussed changing the order and viewing for columns in the series selector and the data table.
Columns most important for viewing in the Data Table: DataValue, LocalDateTime, QualifierCode
In the Series Selector, we need to make the QC information more on the left of the table to make them more visible.

this will resolve issue #202 as well

ready for testing in branch olvcols

Looks good to me.


Will the embedded script in PDF be executed?

Attach (recommended) or Link to PDF file here:
Configuration:

Web browser and its version: any
Operating system and its version: any
PDF.js version: 2.1.183
Is a browser extension: No

Steps to reproduce the problem:

Open a PDF containing a malicious script.
Will the script be executed?

What is the expected behavior?
Any script inside the PDF will be disabled.

If you're talking about embedded JavaScript, then the answer is "no" because we don't execute embedded JavaScript. The only thing we do with embedded JavaScript is parse it to check if there is a print instruction, and open the print dialog if that is the case. This is only string parsing though, no JavaScript is actually executed.


program quits when using async/await

When using async/await, The program quits. I have tried only using Raylib commands on the Main Actor and main thread. Still crashes if there is an await.
I got it working with the following work around; however, this ties up the main thread with a semaphore.
    @MainActor static func main() {
        Raylib.initWindow(800, 450, "test")
        Raylib.setTargetFPS(60)

        while Raylib.windowShouldClose == false {
            let semaphore = DispatchSemaphore(value: 0)
            DispatchQueue.global().async {
                Task {
                    await update()
                    semaphore.signal()
                }
            }
            semaphore.wait()
            draw()
        }

        Raylib.closeWindow()
    }

This sounds like it could be a pretty serious issue. Swift is big on concurrency. It'd be nice to know more at least.


Switch URL and Subtitle

Great addon, exactly what I missed.
I'd love to switch the subtitle below the box and the text in the box. Is this possible?

@mkjo The subtitle is the Name of the bookmark. If you edit the properties of the bookmark and update the name, the subtitle will be updated.
The text in the box is automatically generated based on the domain, and that can't be modified.

Hello,
oh, sorry, my wording was wrong...
I wanted to ask if it is possible to swap the subtitle and the text in the box. Then it is possible to control the big text in the box with the bookmark name.
I have several urls (edit.whatever.com) which end up in a big "edit". I'd prefer that I can use the bookmark title instead of the URL, so I can use the bookmark name "My Blog".
If you tell me where I find the corrosponding parts in the source code, I can try to change this by myself.

Thank you for the feedback. At this time it isn't possible to switch the subtitle and the text in the box.

@mkjo I have a beta/web demo for the ability to switch the title and URL. Please feel free to take a look, and let me know if you have any thoughts or feedback. The demo version runs in the browser and has some hard-coded bookmarks for testing.
https://demo-beta.toolbardial.com/

Good morning,
yes, the sample looks perfect.
Good work.

I'm glad you like it! The update is now available for Firefox!
Closed by 7448c2d3269115f37a33c38c49abf072ac8c5dff.


[BUG]: Key Press action returns error, does not happen.

In raising this issue I confirm that

[X] I have fully completed the issue template
[X] I have searched open and closed issues for duplicates
[X] I have read the Contribution Guidelines
[X] I have read the Code of Conduct
[X] I have read the Documentation

Describe the bug
Button press should lead to action (I only have key presses set up currently).  Action does not occur, system notification reports "Warning: Unable to perform key press action. 'str' object cannot be interpreted as an integer.
I'm running Wayland which the documentation explicitly says wont work for key press actions, but it worked as expected for 2 months after I installed the program. I have updated the system several times and the program kept working as expected each time. After a boot yesterday (last update several days ago), started getting the error. I switched to an X11 session and the bug persists.
Steps to reproduce the behavior
1: configure button action
2: press button on Stream Deck
3: get warning from system with error message, key press action does not happen.
Expected behavior
1: press button
2: key press action occurs
Screenshots

System Information
OS: Arch Linux (Garuda)
DE: KDE (Wayland)
Python version: 3.11.6
Stream Deck Version
XL

New keypress logic needs to initialize UInput with the linux event code integer constants instead of their names. I'll submit a PR with a fix.

https://github.com/streamdeck-linux-gui/streamdeck-linux-gui/releases/tag/v4.1.0


Err check on file.create and batch.create

#424

Codecov Report

Merging #425 into master will decrease coverage by 0.07%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #425      +/-   ##
==========================================
- Coverage    85.2%   85.13%   -0.08%
==========================================
  Files         109      109
  Lines        6854     6854
==========================================
- Hits         5840     5835       -5
- Misses        715      718       +3
- Partials      299      301       +2

Impacted Files
Coverage Δ

test/ach-shr-read/main.go
52.94% <0%> (ø)
:arrow_up:

test/ach-boc-read/main.go
46.66% <0%> (ø)
:arrow_up:

test/ach-atx-read/main.go
65.21% <0%> (ø)
:arrow_up:

test/ach-web-read/main.go
73.33% <0%> (ø)
:arrow_up:

test/ach-enr-read/main.go
47.82% <0%> (ø)
:arrow_up:

test/ach-mte-read/main.go
63.63% <0%> (ø)
:arrow_up:

test/ach-dne-read/main.go
46.66% <0%> (ø)
:arrow_up:

test/ach-xck-read/main.go
55.55% <0%> (ø)
:arrow_up:

test/ach-ack-read/main.go
52.94% <0%> (ø)
:arrow_up:

test/ach-iat-read/main.go
70.37% <0%> (ø)
:arrow_up:

... and 15 more

Continue to review full report at Codecov.

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


⚠ Bofrost.fr has degraded performance

In 77a29c6, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1477 ms

Resolved: Bofrost.fr performance has improved in bed917d.


2/15/2019 12:41:29 PM_RJ

Version 0.61
Microsoft Windows NT 6.2.9200.0
Name: RJ
Phone:
Email:
CALIBRATION:
Maybe make export model: 4. Export Calibrated Model ... just to make it more obvious that that comes after calibration?


'method' object is not subscriptable - Normal Excel File

Hi there,
hope that this issue is not redundant. I'm trying to visualize data in a similar fashion to the Gapminder example. The test with px.data.gapminder() runs splendid. However, when I try to transfer the principle on similarly shaped Excel file of own data, the titled error appears. Here the code:
import plotly_express as px
import pandas as pd
import matplotlib as plt

Heisei = pd.read_excel("日本ダム/NihonGapmindFormTest.xlsx")
print(Heisei)

#display of Japanese characters
plt.rcParams['font.sans-serif'] = ['Kozuka Mincho Pr6N']
plt.rcParams['font.serif'] = ['Kozuka Mincho Pr6N']

px.scatter(Heisei, x="Inauguration Year", y="Percent to Dead Volume", animation_frame="Year", animation_group="Dam Name",
           size="Percent to Whole Volume", color="Dam Name", hover_name="Dam Name",
           #log_y = True,
           size_max=45, range_x=[1910,2020], range_y=[-100,1000])

The table includes no NaNs. Dash.ly seems not to be installed. At least it couldn't be pip uninstalled, as it wasn't found.
This is the complete error warning.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-2fdd1e6f0c53> in <module>()
      2            size="Percent to Whole Volume", color="Dam Name", hover_name="Dam Name",
      3            #log_y = True,
----> 4            size_max=45, range_x=[1910,2020], range_y=[-100,1000])

~\Anaconda3\envs\tensorflow\lib\site-packages\plotly_express\_chart_types.py in scatter(data_frame, x, y, color, symbol, size, hover_name, hover_data, text, facet_row, facet_col, error_x, error_x_minus, error_y, error_y_minus, animation_frame, animation_group, category_orders, labels, color_discrete_sequence, color_discrete_map, color_continuous_scale, color_continuous_midpoint, symbol_sequence, symbol_map, opacity, size_max, marginal_x, marginal_y, trendline, trendline_color_override, log_x, log_y, range_x, range_y, render_mode, title, template, width, height)
     59     In a scatter plot, each row of `data_frame` is represented by a symbol mark in 2D space.
     60     """
---> 61     return make_figure(args=locals(), constructor=go.Scatter)
     62
     63

~\Anaconda3\envs\tensorflow\lib\site-packages\plotly_express\_core.py in make_figure(args, constructor, trace_patch, layout_patch)
    653 def make_figure(args, constructor, trace_patch={}, layout_patch={}):
    654     trace_specs, grouped_mappings, sizeref, color_range = infer_config(
--> 655         args, constructor, trace_patch
    656     )
    657     grouper = [x.grouper or one_group for x in grouped_mappings] or [one_group]

~\Anaconda3\envs\tensorflow\lib\site-packages\plotly_express\_core.py in infer_config(args, constructor, trace_patch)
    589     sizeref = 0
    590     if "size" in args and args["size"]:
--> 591         sizeref = args["data_frame"][args["size"]].max() / (
    592             args["size_max"] * args["size_max"]
    593         )

TypeError: 'method' object is not subscriptable

As said, I hope this is not redundant. If so, please link me to the respective issue.
Lots of thanks in advance,
Tobias

Can you post the list of columns in your dataframe? I suspect that "Percent to Whole Volume" isn't a valid column name.
I'll work on making clearer error messages for this sort of thing :)

@nicolaskruchten Sorry for the late answer. Last days were quite busy.  Here two snippets of Excel and Jupyter display. Hope this is of help.

Ah the problem seems to be the line Heisei = Heisei.dropna ... you're not actually calling the function and assigning its output: you're assigning the function. That's what when you print it it says "bound method DataFrame.dropna of ..." etc. This means that you're passing a (non-subscriptable) function reference into px and not a data frame.
Try replacing that line with Heisei = Heisei.dropna() (i.e. add the parentheses :)

@nicolaskruchten that did the trick;-)
Thanks for the kind support!
I know, it's not part of the issue, but maybe as a final suggestion: Animation performs quite rugged with 1200 data points, quite less smooth than with the ~200-point Gapminder example. Are there any limitations I've got to consider or are there preferred formats?

You could try playing with the render_mode to see if that affects animation smoothness. IIRC the default is "svg" for all animations, and "webgl" is the janky one but YMMV.
If you're still having issues, please post some replicable code (i.e. not in a screenshot!) so I can try to help you debug :)


[5.10] Use StringMap in EditorDiagConsumer

5.10 cherry-pick of https://github.com/apple/swift/pull/68550

Explanation: Fixes a use-after-free in SourceKit diagnostic logic
Scope: Affects SourceKit diagnostics
Issue: rdar://111589090
Risk: Low, the fix is small and straightforward
Testing: Passes the test suite
Reviewer: Ben Barham

@swift-ci please test


"configuration-enabled" should be boolean and have a default value

i set accidentally "configuration-enabled" to true/false and realised the setting is a string.
This is very inconvenient for yml manipulations in a ci

i created another middleware with baseline, source-map support & some test... this fixes also this problem.
So i close this issue ui5-middleware-code-coverage-advanced

Nice! I've deprecated my package and are referring to yours instead.


Lecture: Fix attachment unit file upload

Checklist
General

[x] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Client

[x] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
[x] I followed the coding and design guidelines.
[x] Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
[x] I documented the TypeScript code using JSDoc style.

Motivation and Context
Currently the fileupload to the server is somehow broken, when updating an lecture attachment unit with a file with the same name.
As hotfix for this issue this PR disables the keepFilename flag, so that unique filenames are generated. There will be a followup PR to make the keepFilename option work again and do some refactorings.
Description

Steps for Testing

Prerequisites:

1 Instructor
1 Lecture

Log in to Artemis
Navigate to Lecture Administration
Add a lecture unit attachment
Update the unit with a different file, but the same filename
verify that it is still possible to download this file.

Testserver States

[!NOTE]
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked

Review Progress

Performance Review

[ ] I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
[ ] I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Since #7536 offers a better solution in the same time, we will go with the correct approach and not the hotfix


Emit closing event

For use cases where you want to stop doing something the moment close is called

Not a very useful pattern in general (cleaner to be explicit about the state, and add the 'closing' logic in the _close function)


"Too many open files" and binutils 2.31.1-1

"Too many open files" when building LLVM/clang (release_60 branch) with the most recent version of binutils (2.31.1-1).
Running ulimit -n 3200 did not help.
Downgrading to 2.30-2 solved the problem.

Closing here and reporting on MINGW-packages:
https://github.com/Alexpux/MINGW-packages/issues/4317


Problem with running npm start - listening to default 8081 port

These threads helped me identify the problem:
https://github.com/facebook/react-native/issues/12
figuring out I needed to take steps in iOS app delegate:
https://github.com/facebook/react-native/issues/240
First I had to make sure I added the main.jsbundle to the project (the reference in the thread )

figuring out it was the 8081 port officiallyL
https://github.com/facebook/react-native/blob/master/packager/packager.js#L35
But I still kept getting the same problem and @mbrgm helped me through it.
 But before that, try ps aux | grep 3960 to see full path to the process that is taking that port.

Yup, I did that this morning too. Still not working unfortunately.

Finally got it to work, plus the curl thing I couldn't do. I had to recomment out things and do a fresh restart since I think OSX was locking up everything.

@frantic Should I send a PR adding a hint about the EADDRINUSE error to the troubleshooting section of the docs?

@mbrgm - as of #736 we provide better error message. Also the troubleshooting page already has instructions how to find out which process is taking the port and what to do. Or am I missing something?

@frantic Sorry, I missed that. This project is progressing so fast, I should've looked there before ;)


Account referenced in contract calls

Staked looked at their STX account and expected to see references in the delegate contract calls users made. This is currently not possible but I wanted to surface this as feedback for future development.
cc @markmhx

To be specific here, this would entail adding a list of delegate-stx transactions to the Explorer page for the address set with the delegate-to parameter?

I was thinking more broadly - across all contract methods. Just for this one method might be a very incremental benefit. wasn't specific in the request though


[Bug] When app is in dark mode, the "head" of the window is still white

To Reproduce
Just select the dark theme in the settings
Expected behavior
The "head" of the window is also dark
Screenshots

Desktop:

OS: win 11 22000.918
Version: 2.37.1

Additional context
Issue is true for both main and settings window

This will be addressed in v3.

At least from 2.4.0 it is the case, IMHO it should default to "use system" but that's another topic:

I think this can be closed

@melMass Thanks for driving attention. This is indeed fixed with te latest version of the app, closing as completed!


lib: mk overridable & extendable; also move flake output

make overrideable (override function is added by makeOverridable)
make nixvim-lib extendable (extend function is added by makeExtensible)
treewide: access nixvim-lib via flake instead of directly importing it

Add a non-system specific <flake>.lib.nixvim output, which is equivalent to the existing <flake>.lib.<system>.helpers output.
A warning is traced when the per-system output is used.
This is now also wrapped with lib.makeOverridable to allow overriding the function args used to construct the nixvim-lib. Additionally, lib.fix was replaced with lib.makeExtensible, allowing nixvim's sub-lib to be directly extended via overlays.
Throughout the codebase, nixvim-lib now comes from the flake outpets, rather than being imported manually. Where _nixvimTests needs to be passed, we use .override.

Note, any overlays will be reset if you subsequently use override. E.g.
{ lib }:
rec {
  extended = lib.nixvim.extend (final: prev: {
    # Overlay
    hello-world = "hi there";
  });

  overridden = extended.override {/* args */};

  extendedHasHello = extended ? hello-world; # true

  overriddenHasHello = overridden ? hello-world; # false
}

In follow up work I'd also like to offer a <flake>.lib.overlay which should replace the current lib.nixvim.extendedLib hack. This will allow wrapper modules and end-users to apply nixvim's lib extensions to any compatible nixpkgs lib, rather than always using the lib that provided by flake-parts.
Perhaps this could also be done automatically by evalNixvim when users supply their own specialArgs.lib?

@mergify queue


Windows line wrap doesn't linefeed

Both V6 and V5 show this behavior in Windows. It works fine in Linux. Run an example and type past the end of the line; you'll be typing over the first line. Backspace past the start of a line and the input starts moving up the screen. Reproduces in PowerShell and CMD in the old terminal (conhost.exe), new Windows Terminal, and VSCode terminal.

Indeed,
At least versions 4, 5 and 6 are impacted (repaint / refresh is buggy).
And latest panics !
I don't have access to a windows machine at home and only limited access at work.
I may be able to reproduce with Wine.
Regards.

I cannot reproduce with Wine. But I will try to debug and fix it on Windows.

Could you please confirm that it happens only on Windows 10 ?
Currently rustyline is using ENABLE_WRAP_AT_EOL_OUTPUT (which is activated by default).
And there seems to be a bug when you mix both ENABLE_WRAP_AT_EOL_OUTPUT and ENABLE_VIRTUAL_TERMINAL_PROCESSING: https://github.com/microsoft/terminal/issues/349
Before Windows 10, ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported so we are not impacted.

As a temporary/dirty workaround, you can disable colors (ColorMode::Disabled) to make line wrapping works on Windows 10.

Should be fixed in 6.1.2


How do you infer on test data

How do you infer on test data ? Can you point me to an example ?

Use learn.get_preds or learn.predict, https://docs.fast.ai/learner.html#Learner.get_preds


Comparing oracle WER of CTC vs. transducer models for gigaspeech

Hello, we are doing experiments on gigaspeech with the pretrained models. One of the experiments is to inspect and compare the oracle WER of CTC vs. transducers. Here is what we get:
CTC (decoding method: attention-decoder/nbest_oracle, num-paths: 1000)

dev
ngram_lm_scale_0.5_attention_scale_0.7
10.41

test
ngram_lm_scale_0.5_attention_scale_0.7
10.56

dev
oracle_1000_nbest_scale_0.6
5.48

test
oracle_1000_nbest_scale_0.6
5.89

Note that we have got slightly better CTC results (10.41&10.56) than here, because we tuned the best hlg_scale=0.52 for HLG graph, which is 1.0 in the default recipe.
Transducer (decoding method: modified_beam_search/fast_beam_search_nbest_oracle, num-paths: 1000)

dev
beam_size_4
10.41

test
beam_size_4
10.53

dev
oracle_1000_nbest_scale_0.4
6.75

test
oracle_1000_nbest_scale_0.4
7.26

We got slightly worse WER (10.41&10.53) than here, but notice that the oracle WER of transducer are much worse than that of CTC. They don't even seem comparable.
I was following the recipe here to get the oracle WER for the gigaspeech transducer. Was wondering (1) if it is normal that transducers can have a worse oracle WER than the CTC model (e.g., due to different implementations/mechanisms; or same story for librispeech or other corpus); (2) I forgot to tune some hyper params (I have done num-paths and nbest-scale); or (3) I have done something wrong.

Are you using the latest master of k2?

Maybe not the latest. I will check and get back to you.


Failed to load steamclient.so after verification.

i ran opensteam at least 20 times and it refuses to download steamclient.so, copying the file manually makes the program launch but it will not let me login into an account not sure if that's just because i'm using a diffrent steamclient.so or related to  #6

console log

[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Relaunching
[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Launched correctly, opensteam_marker is inside this directory
[SteamClientMgr] Failed to dlopen steamclient.so: cannot open shared object file: No such file or directory
[Startup] Failed to load steamclient.so; verifying and restarting.
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_ubuntu12.zip.9151f0a5f3363cd297840f33644ed03638709121 started
[Updater] Downloaded successfully
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_sdk_ubuntu12.zip.af7a25a5fb81483cccce95b6c6c6ac230d072817 started
[Updater] Downloaded successfully
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_misc_ubuntu12.zip.851e81bcc68f13ade0314d4ee84e8c0425942cb6 started
[Updater] Downloaded successfully
[Bootstrapper] Relaunching
[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Launched correctly, opensteam_marker is inside this directory
[SteamClientMgr] Failed to dlopen steamclient.so: cannot open shared object file: No such file or directory
[Startup] Failed to load steamclient.so after verification.
> opensteam                                                                    opensteam-git/git/master !
[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Relaunching
[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Launched correctly, opensteam_marker is inside this directory
[SteamClientMgr] Failed to dlopen steamclient.so: cannot open shared object file: No such file or directory
[Startup] Failed to load steamclient.so; verifying and restarting.
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_ubuntu12.zip.9151f0a5f3363cd297840f33644ed03638709121 started
[Updater] Downloaded successfully
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_sdk_ubuntu12.zip.af7a25a5fb81483cccce95b6c6c6ac230d072817 started
[Updater] Downloaded successfully
[Updater] Downloading https://client-update.akamai.steamstatic.com/bins_misc_ubuntu12.zip.851e81bcc68f13ade0314d4ee84e8c0425942cb6 started
[Updater] Downloaded successfully
[Bootstrapper] Relaunching
[ThreadController] Initialized thread CallbackThread
[ThreadController] Initialized thread ComputerInUse
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
[Bootstrapper] Launched correctly, opensteam_marker is inside this directory
[SteamClientMgr] Failed to dlopen steamclient.so: cannot open shared object file: No such file or directory
[Startup] Failed to load steamclient.so after verification.

The steamclient.so needs to precisely match our version. You can get the correct one from those URLs in the logs, specifically the sdk one. It's just a zip file, so extract it with unzip. Archive tools don't recognize those files for me.

every https url in the logs returns a 404 not found when trying to download via firefox or curl for me

Ah, looks like valve removed the old binaries from their servers. I'll have to update the opensteamworks headers and use a newer client version.

Yep, always remember to archive package versions since they remove them after some time. Only a few months ago has the effort to archive them actually started.
Still, if you happen to have these, would you mind re-hosting them temporarily? I wanted to test the project--when suddenly this happened.

There's currently gonna be some downtime for new users, since I'm working on tooling to auto-update OSW headers and the used steamclient version.
I don't have those package versions on hand, but I do have the binaries, however I want to avoid us having to hosting the binaries, since I'm not sure of the legality of hosting their zips/binaries.

Please retest. Updated the headers, should be able to just rebuild opensteam from source. No release build yet, though one is available through actions.


doc page of ol/source/State is empty

the doc page at: https://openlayers.org/en/latest/apidoc/module-ol_source_State.html is empty.
Referral through: https://openlayers.org/en/latest/apidoc/module-ol_source_Source-Source.html#getState

The API doc is currently broken with the new TypeScript types.
The next release should have better docs again.

see #8449 for more info about the new api doc


script/github_importer.rb could probably benefit from using GraphQL

script/github_importer.rb right now uses the GitHub REST APIs and takes about 2 minutes to complete.
We can probably reduce that time by using the GitHub GraphQL APIs instead, especially in the fetch_teams and fetch_issues methods.
Context. What's github_importer.rb?
script/github_importer.rb is a script that gets executed at build and it downloads data from GitHub resulting in the following files:

_site/assets/github_issues.json, loaded by Javascript at https://developers.italia.it/en/to-do (and https://developers.italia.it/it/cosa-fare)

_data/github_teams.yml, _data/github_members.yml, _data/github_tech_list.yml, used by Jekyll to build:

The team members in each Platform page (eg. https://developers.italia.it/en/anpr/)
The contributors at https://developers.italia.it/en/contacts
The list of technologies at https://developers.italia.it/en/to-do

github_importer.rb is now in this repo (italia/developers.italia.it#1045)


Tabs: Various fixes for multiple tabs and right/close buttons position

The first commit fixes #4107 which would compute a bad offset due to forgetting about the tab's icons.
The second commit fixes the navigation buttons that were overlapping the tabs when resizing, and used the fixed get_tab_width to reduce code duplication.
I'll likely add a third commit just to do some cleanup but no functional change.

The last commit fixes this bug:


Create Draw-Circles-Dynamically-QPixMap2.ring

Example of QPixMap2 for dynamic drawing on a canvas.

Thanks for  the sample


[Bug]: snowflake_grant_database_role doesn't grant to database roles

Terraform CLI Version
1.9.5
Terraform Provider Version
0.99.0
Company Name
No response
Terraform Configuration
resource "snowflake_database_role" "database_role" {
  database = var.database
  name     = var.database_role_name
}

resource "snowflake_database_role" "parent_database_role" {
  database = var.database
  name     = var.parent_database_role_name
}

resource "snowflake_grant_database_role" "g" {
  database_role_name        = "\"${var.database}\".\"${snowflake_database_role.database_role.name}\""
  parent_database_role_name = "\"${var.database}\".\"${snowflake_database_role.parent_database_role.name}\""
}

Category
category:resource
Object type(s)
resource:grant_database_role
Expected Behavior
Create a Snowflake query that follows this format:
GRANT DATABASE ROLE "DATABASE_NAME"."CHILD_DATABASE_ROLE" TO DATABASE ROLE "DATABASE_NAME"."PARENT_DATABASE_ROLE";
Actual Behavior
GRANT DATABASE ROLE "DATABASE_NAME"."CHILD_DATABASE_ROLE" TO ROLE "DATABASE_NAME.PARENT_DATABASE_ROLE";
Steps to Reproduce

copy the configuration
run terraform apply

How much impact is this issue causing?
Medium
Logs
No response
Additional Information
Current workaround is to use snowflake_unsafe_executes
Would you like to implement a fix?

[ ] Yeah, I'll take it 😎

Hi @bkimjin 👋
I can't reproduce this issue. Please provide logs with TF_LOG=DEBUG.
Also, fully_qualified_name field is now recommended, like this:
resource "snowflake_grant_database_role" "g" {
  database_role_name        = snowflake_database_role.database_role.fully_qualified_name
  parent_database_role_name = snowflake_database_role.parent_database_role.fully_qualified_name
}

We'll update the docs.

It looks like this was a user error. I mistakenly used parent_role_name instead of parent_database_role_name.

Great to hear that @bkimjin. Is there anything left to solve in this issue or can we close it? :)

I'll go ahead and close, thanks!


Mongo-connector with ES and MongoDB Cluster

Hi there. I have a question regarding mongo-connector deployment on a cluster environment.
Currently, I have 3 nodes configured with a MongoDB replicaSet and with a ES cluster. I run mongo-connector to create the ES indexes of the MongoDB databases, and everything works well. I have several targetURLs in the docManagers config for mongo-connector regarding the three nodes.
Anyway I'm wondering what happens if I run mongo-connector with this configuration in all three nodes. Let's say I'm running mongo-connector just in node1. In case node1 shuts down, then ES won't index new data from node2 and node3. So my goal is to keep syncing data despite one node failure.
The obvious answer is to run mongo-connector from all three nodes, but I'm afraid about 3 mongo-connectors behavior syncing all nodes at once. Probably it will case some unuseless traffic or, worst, some information collisions or duplications.
Has someone work with a configuration like this? Any advice of how to do it?
Thank you in advance.
M.

I have exact same question. How the connector works in a HA environment to allow fail over.

I have isolated mongo-connector in a separate host. Running my tests I realized that it's not a good idea to run mongo-connector in the three nodes because of data rebounds. That host is replicated, so if it downs then the backup mongo-connector host starts.

How about running the three nodes behind a load balancer and give that url to mongo-connector (Assuming that the mongodb on 3 node cluster data is always replicated and data is same across all the three nodes)

@kgrvamsi that's almost the same that I have now. I run mongo-connector from another host in the same network segment, pointing to one node. The load balancer solution seems a good idea, but does not answer to mongo-connector behaviour in a HA mongodb environment.
I think MongoDB is designed for not to use a load balancer. Anyway, I wouldn't know how to put a load balancer in front of MongoDB replicaset that supports mongodb:// protocol.


I wanted to learn how to save my definitions and export them in .json file

I wanted to learn to save my updated save value in a json file, please help !

I'll try to help you with your problem. The best place for these questions is emilios discord though, as this is for feature requests and bug reports.
Anyways. I'm not sure what you want to achieve here. If you just want to be able to save and load you can use the built in save/load system. If you want to create a save/load system of your own, you can use Dialogic.export() function to get all of the current data (including definitions) and then you can save it to a json or text file.
Not sure what you are going for, so maybe this doesn't help. Let me know if you need further/different information.


No mention of CSV in extras/datafiles/ documentation ?

Hi,
Documentation in extras/datafiles/ doesn't mention CSV as an allowed format in data/ folder.
So it assumes that we absolutly need to use "URL" (doc from Data-driven Content) to be able to get CSV value.
Is that correct ?

Yes, that is correct. The /data is loaded into a map/dictionary, and I don't see the CSV fitting into that model.


Sankey plots do not work with new explain_average function

The ImportanceNetwork seems to have some problems with the new output from the explain_average function. The sankey plots fail to be created from here even though an ImportanceNetwork class instance can be instantiated. This is mostly a reminder to look into this when we have time

#15 Solved


Support Expression Language for Tenant resolution

PR for supporting Expression language in Security.
Evaluated Expressions

So we could support something like
    @Get
    @Tenant("#{ getCookie('tenant')?.value }")
    public String index() {
        return "name";
    }

or
    @Get
    @Tenant("#{ getHeader('tenant')?.value }")
    public String index() {
        return "name";
    }

via ServerRequestContext.currentRequest() in an bean linked via @AnnotationExpressionContext on the annotation
Currently trying to work out how we would get that value in the annotated method

we need to have #tenantId resolvable in a expression:
@Secured("#{ tenantId == 'foo' && user?.attributes?.get('email') ==<EMAIL_ADDRESS>}")


Register-Nym: Status Code: 422: Unprocessable Entity (missing data)

I'm working on building a controller. I'm using the Node.JS sample to build on. Most of the functions work just fine, but I'm having an odd challenge with /ledger/register-nym. The POST request returns a 422: Unprocessable Entity. The ACA-Py logs show me the data is missing, but it's not (see the third line with the body). Using the same data on the Swagger UI works just fine.
Note: I'm using a multi-tenancy setup. The token should be fine (it's the right token for a wallet which has the Endorser DID already registered on the ledger). Besides - I have seen other error messages if I make a mistake there - and as said, this token does work when using it on the Swagger UI.
wallets  | 2021-03-18 10:53:54,362 aries_cloudagent.admin.server DEBUG Incoming request: POST /ledger/register-nym
wallets  | 2021-03-18 10:53:54,362 aries_cloudagent.admin.server DEBUG Match info: <MatchInfo {}: <ResourceRoute [POST] <PlainResource  /ledger/register-nym> -> <function register_ledger_nym at 0x7f1e522bf158>>
wallets  | 2021-03-18 10:53:54,363 aries_cloudagent.admin.server DEBUG Body: {"did":"ASzfMxF3WYxje1PgdsR1Jy","verkey":"69gBCJBtCZLiab4SB54Z6Tx3P9fVPjqkzkLiACmrRfxV","alias":"Test app 10"}
wallets  |
wallets  | =================
wallets  | 2021-03-18 10:53:54,364 aries_cloudagent.admin.server ERROR Handler error with exception: Unprocessable Entity
wallets  | Traceback (most recent call last):
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/webargs/asyncparser.py", line 90, in parse
wallets  |     result = schema.load(parsed)
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/marshmallow/schema.py", line 723, in load
wallets  |     data, many=many, partial=partial, unknown=unknown, postprocess=True
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/marshmallow/schema.py", line 904, in _do_load
wallets  |     raise exc
wallets  | marshmallow.exceptions.ValidationError: {'did': ['Missing data for required field.'], 'verkey': ['Missing data for required field.']}
wallets  |
wallets  | During handling of the above exception, another exception occurred:
wallets  |
wallets  | Traceback (most recent call last):
wallets  |   File "/home/indy/aries_cloudagent/admin/server.py", line 164, in ready_middleware
wallets  |     return await handler(request)
wallets  |   File "/home/indy/aries_cloudagent/admin/server.py", line 201, in debug_middleware
wallets  |     return await handler(request)
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/aiohttp_apispec/middlewares.py", line 34, in validation_middleware
wallets  |     schema["schema"], request, locations=schema["locations"]
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/webargs/asyncparser.py", line 95, in parse
wallets  |     error, req, schema, error_status_code, error_headers
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/webargs/asyncparser.py", line 108, in _on_validation_error
wallets  |     await error_handler(error, req, schema, error_status_code, error_headers)
wallets  |   File "/home/indy/.pyenv/versions/3.6.9/lib/python3.6/site-packages/webargs/aiohttpparser.py", line 166, in handle_error
wallets  |     content_type="application/json",
wallets  | aiohttp.web_exceptions.HTTPUnprocessableEntity: Unprocessable Entity

Just for reference, doing the exact same thing with a post to /multitenancy/wallet works just fine.
wallets  | 2021-03-18 10:53:53,184 aries_cloudagent.admin.server DEBUG Incoming request: POST /multitenancy/wallet
wallets  | 2021-03-18 10:53:53,184 aries_cloudagent.admin.server DEBUG Match info: <MatchInfo {}: <ResourceRoute [POST] <PlainResource  /multitenancy/wallet> -> <function wallet_create at 0x7f1e521660d0>>
wallets  | 2021-03-18 10:53:53,185 aries_cloudagent.admin.server DEBUG Body: {"image_url":"","key_management_mode":"managed","label":"Test app 10","wallet_dispatch_type":"default","wallet_key":"6KN1QuA1ZFs6Hs9TU0Nd90Ob","wallet_name":"testapp10@testapp","wallet_type":"indy","wallet_webhook_urls":["http://localhost:3000/webhooks"]}
wallets  | 2021-03-18 10:53:53,186 indy.non_secrets DEBUG open_wallet_search: >>> wallet_handle: 2, type_: 'wallet_record', query_json: '{"wallet_name": "testapp10@testapp"}', options_json: '{"retrieveRecords": true, "retrieveTotalCount": false, "retrieveType": false, "retrieveValue": true, "retrieveTags": false}'
wallets  | 2021-03-18 10:53:53,187 indy.non_secrets DEBUG open_wallet_search: Creating callback
wallets  | 2021-03-18 10:53:53,187 indy.libindy DEBUG create_cb: >>> cb_type: <class 'ctypes.CFUNCTYPE.<locals>.CFunctionType'>
wallets  | 2021-03-18 10:53:53,187 indy.libindy DEBUG create_cb: <<< res: <CFunctionType object at 0x7f1e486a52a0>
wallets  | 2021-03-18 10:53:53,187 indy.libindy DEBUG do_call: >>> name: indy_open_wallet_search, args: (c_int(2), c_char_p(139768168671712), c_char_p(139768040736240), c_char_p(139768206036816), <CFunctionType object at 0x7f1e486a52a0>)

Note: I'm now also getting this in another function. It seems to have something to with how I post the data. I've tried posting "querystring" encoded data as application/x-www-form-urlencoded and I've tried posting the data in json format as application/json. The results are the same as above. Plus, it is working to create a wallet. Any thoughts on where this is going wrong?

Attached is a simple JS file to troubleshoot the issue. I can't seem to find a way to get this to work. Again, no challenges via Swagger with the exact same call and DID.
troubleshoot.js.gz

@amanji -- can you help out with this one?  Thanks!

Sorry there was no follow up on this one -- or at least not recorded.  There was likely something local that caused the problem, so closing the issue.


import lephare creates new timed run everytime

I don't think this was the intended behaviour. If there is already at least one timed run directory the LEPHAREWORK directory should be set to the /lephare/work folder which is linked to the latest run but no new run should be created and linked unless specifically requested.
Before submitting
Please check the following:

[x] I have described the situation in which the bug arose, including what code was executed, information about my environment, and any applicable data others will need to reproduce the problem.
[x] I have included available evidence of the unexpected behavior (including error messages, screenshots, and/or plots) as well as a descriprion of what I expected instead.
[x] If I have a solution in mind, I have provided an explanation and/or pseudocode and/or task list.

@Olivia Note to self: wanted to reexamine - are we creating a lot of empty directories?

If there is no cached work directory create a new work directory and timestamped run directory.
If there is a cached work directory, just use that one, and don't create a new timestamped run directory.

For logging when running lephare, can we follow the WORK symlink so that we can print where the output is actually being kept on disk using os in python?

Just to give an idea of the impact my work cache is now 4Gb from restarting and rerunning notebooks while I test stuff.

Summarizing the list of requirements from our previous discussion

If an established users that has the environmental variables (e.v.) set calls the create_new_run function, they will get a warning message and no new directories will be created.
In order to go back to a previous run, a modern user will set their e.v.
Only allow create_new_run to be used if the LEPHAREWORK e.v. is set to the symlinked work directory.

An open question
What approach should we take to create the directories? Doing so in the top level init.py file doesn't seem like the right choice in the context of rail_lephare. We want to be able to import lephare and set the output location in the Inform stage. And use the output from there as the input to the Estimate stage.

Yes that is correct. 2 should already be implemented. I think that all that is still required in PR #100 is implementing the checks in create_new_run

Would nice to add in metadata to the config. Would we want information in the config files so that we can tell RAIL stages what env vars to set?
Perhaps just implementing some log files that record this information in the work directory would be better.

Could create a secondary config file during the inform stage, with the run directory, that would be picked up by the estimation stage and set the env vars. This could be in the model file produced by the inform stage.


GPU Memory Resource Exhaustion issue

I am running a multimer analysis using local AlphaFold 2.2.2 installed on our server and have successfully predicted structures for monomer and multimer analyses. Recently I need to predict a protein complex using 3 protein sequences, one of which is 2482 amino acids long while other two are shorter.
I have provided adequate memory as seen here

I have tried running variations of various solutions provided here on Github issues but keep getting same error about resource exhaustion. When I look at log file, the GPU RAM is not being fully utilized.

My configurations are as below

Can you help me with this? The error seems to be from AlphaFold is analyzing the longest protein sequence in the complex. To reduce the load on memory, I am running my multimer analysis using "-db_preset=reduced_dbs" parameter
Any help from the developers or the community is deeply appreciated
Thanks
-B. Issac

We improved the GPU usage for AlphaFold-Multimer in v2.3.0 - hopefully this addresses your issue. Closing this issue now, feel free to reopen if you still encounter this in v2.3.0.


Void counts but elite void doesn't... lol

🐛 Bug Report
Petition for someone to actually review the code

resolved #761


Improve in page TOC

https://abouolia.github.io/sticky-sidebar/ maybe?

Discussed with @aslakhellesoy today:

TOC should distinguish between level of headers. (Example we looked at: http://kotlinlang.org/docs/tutorials/ - folding in and out is not necessary, also longer pages are fine but should have "jump to" TOC)
TOC should not be "lost" when scrolling down, especially if we're making longer pages (i.e. Cucumber reference)
Very short pages may not need TOC (e.g. install page?); possibly be able to turn off/on TOC for a page in the frontmatter

Sidenote: TOC doesn't work when inside of language block

Sounds good. I'm looking at implementing stickiness on the menu.
I think the solution to the language blocks is to remove all titles from them. @aslakhellesoy is writing a linter for that, and we can then fix it.
I'll look into multi level TOC, not sure it works out of the box.

If by removing titles from language blocks you mean make sure they're outside of the language block, then yeah!
Note: There might be titles that are only relevant inside a language block though? I.e. Maven for Java, npm for Javascript, bundler for Ruby. Sections should have a high level title outside the language block, i.e. build tools or something, but language specifics inside the block.

Yeah, making sure they're outside.
We can probably write around most cases, although the ones you mention might be tricky

Make them bold instead of headers?

Also, see #108 (and maybe merge these issues?)

Fixed in 9e2f8b468


Collapsibles only work inside a  element

I would like to create a materialize table with collapsible rows. Because the Materialize collapsible code is pretty well hard-coded to only look for collapsibles within
s (why?), each row needs to be within its own
. But that breaks the strict formatting that HTML tables require.
So far, the best-looking solution that I've come across looks something like this.
    {{#each rows as row}}

                            {{#each columns as column}}
                                content
                            {{/each}}

                  Row details

    {{/each}}

Where essentially, I'm creating a new table and collapsible for every table row. This seems like an absurd waste, caused only because a
 is not allowed to be a collapsible-header.
Would it be possible to either get some insight into the rationale behind this, or to accept more kinds of collapsibles? Or, does anyone know of a better way to accomplish what I'm talking about?

A collapsible table cell is a great Idea


When transforming results, observation properties that are common should be aggregated at the results level

Issue description / feature objectives
The current methodology is to have each observation comprise a full complement of properties. This is wasteful, since data is duplicated over and over. Better is to discover which properties are in common for all observations of a transformation and make a single entry at the level above (in the result properties).
This is a breaking change. To gather all the properties for a single observation, the common and unique properties must be combined by the user.
Caveats / Assumptions
The user of the Tanium and OSCO transformers will need to be aware of the format change and adjust accordingly.
Completion Criteria
Test cases are revised and pass.

Closed by #997.


feat: Clarify the algorithm to be fully consistent with CSS clamp()

Note: This may not be the same as other languages, e.g. in C++, C#, Rust, an error is thrown when MIN is greater than MAX.
C#

Rust

Will revisit once we have figured out what we actually want the argument names and order to be.


Android : Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNCGeolocation' could not be found.

Environment
"react": "18.3.1",
"react-native": "0.76.4",
"@react-native-community/geolocation": "^3.4.0",

Platforms
Android

Versions

Android: 31
react-native-geolocation: "^3.4.0",
react-native: "0.76.4",
react: "18.3.1",

Description
Created new react native project using cli comand and run it on the android emulator and ios simulator. After install the this npm and do the code as below
import GeoLocation from '@react-native-community/geolocation';
GeoLocation.setRNConfiguration({
skipPermissionRequests: false,
authorizationLevel: 'always',
enableBackgroundLocationUpdates: true,
locationProvider: 'auto',
});
GeoLocation.requestAuthorization();
Using ths above code snippet on iOS it is working as expected but android app is crashing, as below

Reproducible Demo

Create new react native application - npx @react-native-community/cli@latest init AwesomeProject
Install this npm - yarn add @react-native-community/geolocation (also tried with recommended npm command)
Added above code snippet
Run the app on the android simulator

Same,
react-native 0.76.4
Tried various verison numbers.


Oobabooga Support

Hello! Do you have any plans to support Oobaboga, other than LM Studio when you use the local model?

Good point - it should already support it. Give it a try (on my latest commit) and let me know if there's any issues.

What specific model are you using? Does the error happen every time?

What specific model are you using? Does the error happen every time?

im using a custom model I made called etheria-55b-v0.1 its loaded using exl2 on ooba as a back end and so far i cannot get a response from the bot. the same api is used to serve silly tavern when i have it loaded in a container. i can access it through a local ip

Try with a more standard model like llama2 and see what happens. It may be that your custom model is formatting its streamed responses improperly. I'd need access to your custom model so I can reproduce and try to debug on my end.

ohhh ill try that and here is the hugging face link https://huggingface.co/Steelskull/Etheria-55b-v0.1
the model is designed to use alpaca or chatml
thanks for the reply!

Try with a more standard model like llama2 and see what happens. It may be that your custom model is formatting its streamed responses improperly. I'd need access to your custom model so I can reproduce and try to debug on my end.

i tried with both a llama 2 and mistral model, with no luck so far

I tried with llama-2-7b-chat.Q4_K_M.gguf from here: https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
It's working fine for me. I'm using oobagooba local API with URL set to http://localhost:5000/v1.
Just as a sanity check, make sure all your stuff is up to date (oobagooba, openai python package, etc.).
Besides that I can't do much until I reproduce the error on my end. The more info you provide the better so I can keep trying.

I tried with llama-2-7b-chat.Q4_K_M.gguf from here: https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
It's working fine for me. I'm using oobagooba local API with URL set to http://localhost:5000/v1.
Just as a sanity check, make sure all your stuff is up to date (oobagooba, openai python package, etc.).
Besides that I can't do much until I reproduce the error on my end. The more info you provide the better so I can keep trying.

i appreciate the help and yea im thinking it was an issue of some kind on my end, ive updated all associated packages. ive even installed the repo on the docker container that has ooba installed then ran the script with http://localhost:/5000/v1 and im getting the same issue. hmmm that means its gotta be a ooba issue... probably

No problem, keep me posted on your progress.
A (maybe helpful) side note: I actually did encounter your exact error ONCE while using mistral-medium from Mistral API (NOT a local model). I posted about it in Mistral's official discord server:

Again, the error only happened once during a random streamed response and then it kept working fine after that. I got a response from a Mistral dev but they didn't know what to make of it:

Another idea - try this simple streamed response example from oobagooba wiki and see if the error still happens:
https://github.com/oobabooga/text-generation-webui/wiki/12-‐-OpenAI-API#python-chat-example-with-streaming
Maybe it's something with the openai python package?

ok so after adding a crapton of http error logic and retry logic i finally got it to kick out an error on oobas side altho im not the best at api and server side things can you make anything of this.
ERROR:    Exception in ASGI application
Traceback (most recent call last):
File "/venv/lib/python3.10/site-packages/sse_starlette/sse.py", line 247, in call
await wrap(partial(self.listen_for_disconnect, receive))
File "/venv/lib/python3.10/site-packages/sse_starlette/sse.py", line 236, in wrap
await func()
File "/venv/lib/python3.10/site-packages/sse_starlette/sse.py", line 191, in listen_for_disconnect
message = await receive()
File "/venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 587, in receive
await self.message_event.wait()
File "/usr/lib/python3.10/asyncio/locks.py", line 214, in wait
await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 1537e0d7a8c0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/venv/lib/python3.10/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
result = await app(  # type: ignore[func-returns-value]
File "/venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in call
return await self.app(scope, receive, send)
File "/venv/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in call
await super().call(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/applications.py", line 116, in call
await self.middleware_stack(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 186, in call
raise exc
File "/venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 164, in call
await self.app(scope, receive, _send)
File "/venv/lib/python3.10/site-packages/starlette/middleware/cors.py", line 83, in call
await self.app(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/middleware/exceptions.py", line 62, in call
await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app
raise exc
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 746, in call
await route.handle(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 288, in handle
await self.app(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 75, in app
await wrap_app_handling_exceptions(app, request)(scope, receive, send)
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 55, in wrapped_app
raise exc
File "/venv/lib/python3.10/site-packages/starlette/_exception_handler.py", line 44, in wrapped_app
await app(scope, receive, sender)
File "/venv/lib/python3.10/site-packages/starlette/routing.py", line 73, in app
await response(scope, receive, send)
File "/venv/lib/python3.10/site-packages/sse_starlette/sse.py", line 233, in call
async with anyio.create_task_group() as task_group:
File "/venv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 678, in aexit
raise BaseExceptionGroup(
exceptiongroup.ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)

Not sure what to make of that. Did you try what I suggested above? AKA try running the simple streamed response example that doesn't use the openai python package.

Another idea - try this simple streamed response example from oobagooba wiki and see if the error still happens: https://github.com/oobabooga/text-generation-webui/wiki/12-‐-OpenAI-API#python-chat-example-with-streaming
Maybe it's something with the openai python package?

Same style of error:
im going to try to eliminate ooba and try tabbyapi
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:761, in HTTPResponse._update_chunk_length(self)
    760 try:
--> 761     self.chunk_left = int(line, 16)
    762 except ValueError:
    763     # Invalid chunked protocol response, abort.

ValueError: invalid literal for int() with base 16: b''

During handling of the above exception, another exception occurred:

InvalidChunkLength                        Traceback (most recent call last)
File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:444, in HTTPResponse._error_catcher(self)
    443 try:
--> 444     yield
    446 except SocketTimeout:
    447     # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but
    448     # there is yet no clean way to get at it from this context.

File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:828, in HTTPResponse.read_chunked(self, amt, decode_content)
    827 while True:
--> 828     self._update_chunk_length()
    829     if self.chunk_left == 0:

File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:765, in HTTPResponse._update_chunk_length(self)
    764 self.close()
--> 765 raise InvalidChunkLength(self, line)

InvalidChunkLength: InvalidChunkLength(got length b'', 0 bytes read)

During handling of the above exception, another exception occurred:

ProtocolError                             Traceback (most recent call last)
File /opt/conda/lib/python3.11/site-packages/requests/models.py:816, in Response.iter_content.<locals>.generate()
    815 try:
--> 816     yield from self.raw.stream(chunk_size, decode_content=True)
    817 except ProtocolError as e:

File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:624, in HTTPResponse.stream(self, amt, decode_content)
    623 if self.chunked and self.supports_chunked_reads():
--> 624     for line in self.read_chunked(amt, decode_content=decode_content):
    625         yield line

File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:816, in HTTPResponse.read_chunked(self, amt, decode_content)
    811     raise BodyNotHttplibCompatible(
    812         "Body should be http.client.HTTPResponse like. "
    813         "It should have have an fp attribute which returns raw chunks."
    814     )
--> 816 with self._error_catcher():
    817     # Don't bother reading the body of a HEAD request.
    818     if self._original_response and is_response_to_head(self._original_response):

File /opt/conda/lib/python3.11/contextlib.py:155, in _GeneratorContextManager.__exit__(self, typ, value, traceback)
    154 try:
--> 155     self.gen.throw(typ, value, traceback)
    156 except StopIteration as exc:
    157     # Suppress StopIteration *unless* it's the same exception that
    158     # was passed to throw().  This prevents a StopIteration
    159     # raised inside the "with" statement from being suppressed.

File /opt/conda/lib/python3.11/site-packages/urllib3/response.py:461, in HTTPResponse._error_catcher(self)
    459 except (HTTPException, SocketError) as e:
    460     # This includes IncompleteRead.
--> 461     raise ProtocolError("Connection broken: %r" % e, e)
    463 # If no exception is thrown, we should avoid cleaning up
    464 # unnecessarily.

ProtocolError: ("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", InvalidChunkLength(got length b'', 0 bytes read))

During handling of the above exception, another exception occurred:

ChunkedEncodingError                      Traceback (most recent call last)
Cell In[47], line 26
     23 client = sseclient.SSEClient(stream_response)
     25 assistant_message = ''
---> 26 for event in client.events():
     27     payload = json.loads(event.data)
     28     chunk = payload['choices'][0]['message']['content']

File /opt/conda/lib/python3.11/site-packages/sseclient/__init__.py:55, in SSEClient.events(self)
     54 def events(self):
---> 55     for chunk in self._read():
     56         event = Event()
     57         # Split before decoding so splitlines() only uses \r and \n

File /opt/conda/lib/python3.11/site-packages/sseclient/__init__.py:45, in SSEClient._read(self)
     38 """Read the incoming event source stream and yield event chunks.
     39
     40 Unfortunately it is possible for some servers to decide to break an
     41 event into multiple HTTP chunks in the response. It is thus necessary
     42 to correctly stitch together consecutive response chunks and find the
     43 SSE delimiter (empty new line) to yield full, correct event chunks."""
     44 data = b''
---> 45 for chunk in self._event_source:
     46     for line in chunk.splitlines(True):
     47         data += line

File /opt/conda/lib/python3.11/site-packages/requests/models.py:818, in Response.iter_content.<locals>.generate()
    816     yield from self.raw.stream(chunk_size, decode_content=True)
    817 except ProtocolError as e:
--> 818     raise ChunkedEncodingError(e)
    819 except DecodeError as e:
    820     raise ContentDecodingError(e)

ChunkedEncodingError: ("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", InvalidChunkLength(got length b'', 0 bytes read))

좋은 점은 이미 지원해야 하는 것입니다. (최근 커밋에서) 계속해서 문제가 알려졌음을 알려드립니다.

내가 여기 받는 오류가 있습니다.
2024-01-30 15:28:30.235 INFO: HTTP Request: POST http://<IP_ADDRESS>:5000/v1/chat/completions "HTTP/1.1 200 OK"
2024-01-30 15:28:30.236 ERROR: Ignoring exception in on_message
Traceback (most recent call last):
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_exceptions.py", line 10, in map_exceptions
    yield
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/http11.py", line 209, in _receive_event
    event = self._h11_state.next_event()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/site-packages/h11/_connection.py", line 469, in next_event
    event = self._extract_next_receive_event()
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/site-packages/h11/_connection.py", line 419, in _extract_next_receive_event
    event = self._reader.read_eof()  # type: ignore[attr-defined]
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/site-packages/h11/_readers.py", line 204, in read_eof
    raise RemoteProtocolError(
h11._util.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/conda/lib/python3.11/site-packages/httpx/_transports/default.py", line 67, in map_httpcore_exceptions
    yield
  File "/opt/conda/lib/python3.11/site-packages/httpx/_transports/default.py", line 252, in __aiter__
    async for part in self._httpcore_stream:
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/connection_pool.py", line 361, in __aiter__
    async for part in self._stream:
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/http11.py", line 337, in __aiter__
    raise exc
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/http11.py", line 329, in __aiter__
    async for chunk in self._connection._receive_response_body(**kwargs):
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/http11.py", line 198, in _receive_response_body
    event = await self._receive_event(timeout=timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_async/http11.py", line 208, in _receive_event
    with map_exceptions({h11.RemoteProtocolError: RemoteProtocolError}):
  File "/opt/conda/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/opt/conda/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
    raise to_exc(exc) from exc
httpcore.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/conda/lib/python3.11/site-packages/discord/client.py", line 441, in _run_event
    await coro(*args, **kwargs)
  File "/home/jovyan/work/Oobabot/discord-llm-chatbot/llmcord.py", line 165, in on_message
    async for chunk in await llm_client.chat.completions.create(
  File "/opt/conda/lib/python3.11/site-packages/openai/_streaming.py", line 116, in __aiter__
    async for item in self._iterator:
  File "/opt/conda/lib/python3.11/site-packages/openai/_streaming.py", line 129, in __stream__
    async for sse in iterator:
  File "/opt/conda/lib/python3.11/site-packages/openai/_streaming.py", line 120, in _iter_events
    async for sse in self._decoder.aiter(self.response.aiter_lines()):
  File "/opt/conda/lib/python3.11/site-packages/openai/_streaming.py", line 231, in aiter
    async for line in iterator:
  File "/opt/conda/lib/python3.11/site-packages/httpx/_models.py", line 967, in aiter_lines
    async for text in self.aiter_text():
  File "/opt/conda/lib/python3.11/site-packages/httpx/_models.py", line 954, in aiter_text
    async for byte_content in self.aiter_bytes():
  File "/opt/conda/lib/python3.11/site-packages/httpx/_models.py", line 933, in aiter_bytes
    async for raw_bytes in self.aiter_raw():
  File "/opt/conda/lib/python3.11/site-packages/httpx/_models.py", line 991, in aiter_raw
    async for raw_stream_bytes in self.stream:
  File "/opt/conda/lib/python3.11/site-packages/httpx/_client.py", line 147, in __aiter__
    async for chunk in self._stream:
  File "/opt/conda/lib/python3.11/site-packages/httpx/_transports/default.py", line 251, in __aiter__
    with map_httpcore_exceptions():
  File "/opt/conda/lib/python3.11/contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/opt/conda/lib/python3.11/site-packages/httpx/_transports/default.py", line 84, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read)

I got the same error, using the this fork version.
It worked well when --base-url was set as an openai compatible format link.
https://github.com/jmoney7823956789378/oobabot.git

Still confused why I'm not seeing this error with oobagooba though. What's different about our setups that's causing this?

Still confused why I'm not seeing this error with oobagooba though. What's different about our setups that's causing this?

I have no idea but when I used tabbyapi I was receiving responses. So it's gotta be either docker (on my end) or ooba. I'll dig in more when I can.

Biggest problem is I was unable to adjust the samplers due to needing to add **kwargs to the api call but open ai api doesn't support the full range or possible samplers.
I attempted to rewrite the api but I got wayyy out of my depth and couldn't figure out how the api calls were structured. (On tabbyapi end)

I was getting the same error as below.

h11._util.RemoteProtocolError: peer closed connection without sending complete message body (incomplete chunked read)

I fixed it by using oobabooga's example, it's currently working as of now here's the code below.
Note that this code may be outdated.
import asyncio
from datetime import datetime
import logging
import os

import discord
from dotenv import load_dotenv
#from openai import AsyncOpenAI

import requests
import sseclient  # pip install sseclient-py
import json

load_dotenv()
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s.%(msecs)03d %(levelname)s: %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

#this doesn't work, local only
LLM_CONFIG = {
    "gpt": {
        "api_key": os.environ["OPENAI_API_KEY"],
        "base_url": "https://api.openai.com/v1",
    },
    "mistral": {
        "api_key": os.environ["MISTRAL_API_KEY"],
        "base_url": "https://api.mistral.ai/v1",
    },
    "local": {
        "api_key": "Not used",
        "base_url": os.environ["LOCAL_SERVER_URL"],
    },
}
LLM_VISION_SUPPORT = "vision" in os.environ["LLM"]
MAX_COMPLETION_TOKENS = 1024

ALLOWED_CHANNEL_IDS = [int(i) for i in os.environ["ALLOWED_CHANNEL_IDS"].split(",") if i]
ALLOWED_ROLE_IDS = [int(i) for i in os.environ["ALLOWED_ROLE_IDS"].split(",") if i]
MAX_IMAGES = int(os.environ["MAX_IMAGES"]) if LLM_VISION_SUPPORT else 0
MAX_IMAGE_WARNING = f"⚠ Max {MAX_IMAGES} image{'' if MAX_IMAGES == 1 else 's'} per message" if MAX_IMAGES > 0 else "⚠ Can't see images"
MAX_MESSAGES = int(os.environ["MAX_MESSAGES"])
MAX_MESSAGE_WARNING = f"⚠ Only using last {MAX_MESSAGES} messages"

EMBED_COLOR = {"incomplete": discord.Color.orange(), "complete": discord.Color.green()}
EMBED_MAX_LENGTH = 4096
EDITS_PER_SECOND = 1.3

#llm_client = AsyncOpenAI(**LLM_CONFIG[os.environ["LLM"].split("-", 1)[0]])
intents = discord.Intents.default()
intents.message_content = True
discord_client = discord.Client(intents=intents)

message_nodes = {}
in_progress_message_ids = []

class MessageNode:
    def __init__(self, message, too_many_images=False, replied_to=None):
        self.message = message
        self.too_many_images = too_many_images
        self.replied_to = replied_to

def get_system_prompt():
    return {
                "role": "system",
                "content": f"{os.environ['CUSTOM_SYSTEM_PROMPT']}\nUser's names are their Discord IDs and should be typed as<EMAIL_ADDRESS>date: {datetime.now().strftime('%B %d %Y')}",
            }

url = "http://<IP_ADDRESS>:5000/v1/chat/completions"

headers = {
    "Content-Type": "application/json"
}

@discord_client.event
async def on_message(message):
    # Filter out unwanted messages
    if (
        (message.channel.type != discord.ChannelType.private and discord_client.user not in message.mentions)
        or (ALLOWED_CHANNEL_IDS and message.channel.id not in ALLOWED_CHANNEL_IDS)
        or (ALLOWED_ROLE_IDS and (message.channel.type == discord.ChannelType.private or not [role for role in message.author.roles if role.id in ALLOWED_ROLE_IDS]))
        or message.author.bot
    ):
        return

    # If user replied to a message that's still generating, wait until it's done
    while message.reference and message.reference.message_id in in_progress_message_ids:
        await asyncio.sleep(0)

    async with message.channel.typing():
        # Loop through message reply chain and create MessageNodes
        current_message = message
        previous_message_id = None
        while True:
            try:
                current_message_text = current_message.embeds[0].description if current_message.author == discord_client.user else current_message.content
                if current_message_text.startswith(discord_client.user.mention):
                    current_message_text = current_message_text[len(discord_client.user.mention) :].lstrip()
                current_message_content = current_message_text if current_message_text else ''
                current_message_images = [
                    {
                        "type": "image_url",
                        "image_url": {"url": att.url, "detail": "low"},
                    }
                    for att in current_message.attachments
                    if "image" in att.content_type
                ]
                #current_message_content += current_message_images[:MAX_IMAGES]
                if "mistral" in os.environ["LLM"]:
                    # Temporary fix until Mistral API supports message.content as a list
                    current_message_content = current_message_text
                current_message_role = "assistant" if current_message.author == discord_client.user else "user"
                message_nodes[current_message.id] = MessageNode(
                    {
                        "role": current_message_role,
                        "content": current_message_content,
                        "name": str(current_message.author.id)
                    }
                )
                if len(current_message_images) > MAX_IMAGES:
                    message_nodes[current_message.id].too_many_images = True
                if previous_message_id:
                    message_nodes[previous_message_id].replied_to = message_nodes[current_message.id]
                if not current_message.reference:
                    break
                if current_message.reference.message_id in message_nodes:
                    message_nodes[current_message.id].replied_to = message_nodes[current_message.reference.message_id]
                    break
                previous_message_id = current_message.id
                current_message = (
                    current_message.reference.resolved
                    if isinstance(current_message.reference.resolved, discord.Message)
                    else await message.channel.fetch_message(current_message.reference.message_id)
                )
            except (discord.NotFound, discord.HTTPException, IndexError):
                break

        # Build conversation history from reply chain and set user warnings
        reply_chain = []
        user_warnings = set()
        current_node = message_nodes[message.id]
        while current_node is not None and len(reply_chain) < MAX_MESSAGES:
            reply_chain += [current_node.message]
            if current_node.too_many_images:
                user_warnings.add(MAX_IMAGE_WARNING)
            if len(reply_chain) == MAX_MESSAGES and current_node.replied_to:
                user_warnings.add(MAX_MESSAGE_WARNING)
            current_node = current_node.replied_to
        #print("REPLY CHAIN")
        #print(reply_chain[::-1])
        #print(reply_chain[0])
        #print("REPLY CHAIN")
        messages = []
        messages.append(get_system_prompt())
        for msgs in reply_chain:
            messages.append(msgs)
        #print(messages)

        # Generate and send bot reply
        logging.info(f"Message received: {reply_chain[0]}, reply chain length: {len(reply_chain)}")
        response_messages = []
        response_message_contents = []
        previous_content = None
        edit_message_task = None
        #print(os.environ["LLM"])

        #copied from sillytavern request, mixtral settings
        data = {
            "mode": "instruct",
            "messages": messages,
            "stream": True,
            "max_tokens": MAX_COMPLETION_TOKENS,
            "max_new_tokens": 2048,
            "temperature": 0.99,
            "top_p": 1,
            "typical_p": 1,
            "min_p": 0.02,
            "repetition_penalty": 1,
            "frequency_penalty": 0,
            "presence_penalty": 0,
            "top_k": 0,
            "min_length": 0,
            "min_tokens": 0,
            "num_beams": 1,
            "length_penalty": 1,
            "early_stopping": False,
            "add_bos_token": True,
            "truncation_length": 4096,
            "ban_eos_token": False,
            "skip_special_tokens": True,
            "top_a": 0,
            "tfs": 1,
            "epsilon_cutoff": 0,
            "eta_cutoff": 0,
            "mirostat_mode": 0,
            "mirostat_tau": 5,
            "mirostat_eta": 0.1,
            "repetition_penalty_range": 600,
            "encoder_repetition_penalty": 1,
            "no_repeat_ngram_size": 0,
            "penalty_alpha": 0,
            "temperature_last": True,
            "seed": -1,
            "guidance_scale": 1
        }

        stream_response = requests.post(url, headers=headers, json=data, verify=False, stream=True)
        client = sseclient.SSEClient(stream_response)
        for chunk in client.events():
            payload = json.loads(chunk.data)
            current_content = payload['choices'][0]['message']['content'] or ""
            #print(current_content)
            if previous_content:
                if not response_messages or len(response_message_contents[-1] + previous_content) > EMBED_MAX_LENGTH:
                    reply_message = message if not response_messages else response_messages[-1]
                    embed = discord.Embed(description="⏳", color=EMBED_COLOR["incomplete"])
                    for warning in sorted(user_warnings):
                        embed.add_field(name=warning, value="", inline=False)
                    response_messages += [
                        await reply_message.reply(
                            embed=embed,
                            silent=True,
                        )
                    ]
                    in_progress_message_ids.append(response_messages[-1].id)
                    last_message_task_time = datetime.now().timestamp()
                    response_message_contents += [""]
                response_message_contents[-1] += previous_content
                final_message_edit = len(response_message_contents[-1] + current_content) > EMBED_MAX_LENGTH or current_content == ""
                if (
                    final_message_edit
                    or (not edit_message_task or edit_message_task.done())
                    and datetime.now().timestamp() - last_message_task_time >= len(in_progress_message_ids) / EDITS_PER_SECOND
                ):
                    while edit_message_task and not edit_message_task.done():
                        await asyncio.sleep(0)
                    if response_message_contents[-1].strip():
                        embed.description = response_message_contents[-1]
                    embed.color = EMBED_COLOR["complete"] if final_message_edit else EMBED_COLOR["incomplete"]
                    edit_message_task = asyncio.create_task(response_messages[-1].edit(embed=embed))
                    last_message_task_time = datetime.now().timestamp()
            previous_content = current_content

        # Create MessageNode(s) for bot reply message(s) (can be multiple if bot reply was long)
        for response_message in response_messages:
            message_nodes[response_message.id] = MessageNode(
                {
                    "role": "assistant",
                    "content": "".join(response_message_contents),
                    "name": str(discord_client.user.id),
                },
                replied_to=message_nodes[message.id],
            )
            in_progress_message_ids.remove(response_message.id)

async def main():
    await discord_client.start(os.environ["DISCORD_BOT_TOKEN"])

if __name__ == "__main__":
    asyncio.run(main())

There were no errors, they ran normally.
test.py (no async)
test2.py (async)
$ python3 test.py
"Sure, I'd be happy to treat this as a test. Let me know how I can assist you with this test. I'm here to help!"
$ python3 test2.py
"Sure, I'd be happy to treat this as a test. Is there a specific task or question you would like me to address?"

My oobabooga version is "snapshot-2024-01-28" I updated it multiple times, it was originally "snapshot-2023-12-17"
The first time I used discord-llm-chatbot was in 2024-01-18 so that's probably why I got those errors, using the latest commit solved it and works!


endpoint_configuration with null endpoint_id

Description
When using the module with endpoint_configuration block inside, I expect the module to skip it when I pass a null endpoint_id, but instead it tries to create the endpoint_configuration and fails with getting a non-null endpointId error.
This is problematic when trying to create GlobalAccelerators without any endpoint behind.
Versions

Module version [Required]: 2.2.0

Terraform version: 1.4.5

Provider version(s): aws 5.30.0

Reproduction Code [Required]

Steps to reproduce the behavior:
module "global_accelerator" {
  source  = "terraform-aws-modules/global-accelerator/aws"
  version = "~> 2.2.0"

  name = "main"

  listeners = {
    listener_1 = {
      endpoint_group = {
        endpoint_configuration = [{
          endpoint_id = null
        }]
      }

      port_ranges = [
        {
          from_port = 443
          to_port   = 443
        }
      ]
      protocol = "TCP"
    }
  }
}

Expected behavior
A new global accelerator is created, with listener and endpoint group but without any endpoint in the group.
Module is skipping the use of endpoint configuration block and no error is produced.
Actual behavior
The module still tries to create an endpoint configuration block and end up with the following error:
│ Error: updating Global Accelerator Endpoint Group (arn:<DEDUCTED>): InvalidArgumentException: EndpointConfiguration endpointId must not be null or empty.
│
│   with module.global_accelerator["main"].aws_globalaccelerator_endpoint_group.this["listener_1"],
│   on .terraform/modules/global_accelerator/main.tf line 55, in resource "aws_globalaccelerator_endpoint_group" "this":
│   55: resource "aws_globalaccelerator_endpoint_group" "this" {

Additional context
I do see there is some check already based on endpoint_id, but it seems to fail to catch it when null is passed.
https://github.com/terraform-aws-modules/terraform-aws-global-accelerator/blob/038b9cd3c2d6e2fb70e6af517b4fc4467206e50b/main.tf#L69C97-L69C108

thats not valid - if you are providing a value then the Terraform is going to try to use it which null is not valid in this context. the can() is simply a check for if the key exists - if the key exists then its going to try to create the resource

thats not valid - if you are providing a value then the Terraform is going to try to use it which null is not valid in this context. the can() is simply a check for if the key exists - if the key exists then its going to try to create the resource

I understand.
Won't it make more sense than to add additional check next to the can() to validate endpoint_id is not null as dependency for endpoint_configuration?
... can(e.endpoint_id) && e.endpoint_id != null ...

no - if you don't want to configure the endpoint configuration, don't pass a value to endpoint_configuration


handle empty array being returned by locationiq

As I have been using this library, I noticed responseData.map errors out on empty arrays returned by locationiq. This code is to handle that error.

Thanks for the PR. Could you fix the tests before I merge ? https://travis-ci.org/nchaulet/node-geocoder/jobs/209928920

Tests should be fixed now.

Thanks 👍


Add subtract

Implemented the following C APIs:

cvAdd() - Adds two arrays (or images)
cvAddS() - Adds an array plus a scalar
cvSub() - Subtracts two arrays
cvSubS() - Subtracts an array by a scalar
cvSubRS() - Subtracts a scalar by an array

These functions allow for an optional mask and I created two golang calls for each one.
The default opencv.Add() opencv.Subtract(), etc. which doesn't use a mask.  And then separate functions opencv.AddWithMask(), opencv.SubWithMask() that does use the masks.
I also added tests for each call with and without masks.

awesome! are you actively working on some projects that utilizes this package?
If so, would you consider be a contributor of this repo? It looks like you're familiar with both Go and C, right?

Yeah, I'm working on a project right now that is almost exclusively Go but with some OpenCV parts which I've written in C++.  We've wanted for sometime now to do the CV part in Go, and I think your nifty project has most of what we need.  We probably will need a few more features which I'll continue to work on.  So yeah, being a contributor for this repo would be great, so I can add things quicker.

That's great. I've sent you an invitation. Please check it out.
My original plan was trying to use SWIG to wrap C++ API, so that we can support OpenCV 2+ (and even 3+) instead of only OpenCV 1 C API. Yet, my time is pretty much occupied by my academic work now.
Please let me know if you're also interested in or familiar with using SWIG to wrap C++ API. The experimental code resides in gocv/ sub-directory.
As for C API, please just go and add whatever you need.
Thanks.

Awesome thanks!
Unfortunately I know nothing about SWIG so probably won't go near the C++ API for now.  But that would be a direction I'd like to see it go too, especially since OpenCV is moving forward and leaving the C API behind.


How to Uninstall/Remove GSI ROM

I've installed A14 following this guide on a non-rooted device.

The only way of removing/uninstalling GSI from your Android device was by performing a factory reset.

But it's still there even after factory reset. Checked from System settings > System > Developer options > DSU Loader

I'm sorry but I didn't understand, anyway, you don't need to perform a factory reset to remove a GSI installed via DSU.
Once you install a GSI via DSU, two partitions are allocated and stored in your internal storage (or sdcard if supported and present), in case of installing a GSI via DSU, two partitions will be allocated, system (containing the GSI itself) and userdata (containing a separated userdata to be used exclusively with installed GSI).
When you have a installed GSI via DSU, your device will show a "Dynamic System Updates" notification, with two options, "Reboot" (that will reboot your device into installed GSI), and "Discard" (that will remove all stuff related to GSI installed via DSU, which will remove all files, and partitions related to this installation), this notification with those options are only shown when you're running your device original OS, when running a GSI installed via DSU, "Dynamic System Updates" notification will show something like "You're currently running a Dynamic System, reboot to return to original OS", with a option to reboot your device.
Then, to remove, everything you need to do is, just boot your phone into device original OS and tap on discard at "Dynamic System Updates" notification 👍.
You can also remove installed DSU via command line (eg, you have dismissed the notification), with "gsi_tool wipe" command.
If you have turned on "Sticky mode" (this option is disabled by default, option that enforces booting into installed DSU, instead of original device OS), then you must disable "Sticky mode", after disabling, a reboot should bring you again to original device OS.
Feel free to ask more questions, i can take some time to answer because im pretty busy nowadays, but i highly recommend reading the README for more info.

I was confused about this. I thought it's the older one but now I got it.

Android 11 introduced the DSU Loader, a tool available in the device's developer options that lets you download, install, and manage GSIs entirely through the system's UI. (source)

One more question the DSU loader of device developer option always download the latest Google GSI ? Cause it always shows Early access Android 14 version of Google GSI.

Highly recommend reading the README for more info.

Lazy me, searched (Ctrl+F or find in page) with keywords like remove, uninstall, discard.
Suggestion add that info to README FAQs.

You can also remove installed DSU via command line (eg, you have dismissed the notification), with "gsi_tool wipe" command.

From terminal or ADB ?
Add it to FAQs, thanks 👍

DSU understanding might be complicated at beginning, you can consider DSU the "implementation", DSU Loader being an official supported frontend to it, and DSU Sideloader as an alternative frontend.
DSU Loader, by default, will try to fetch available images from this prop "persist.sys.fflag.override.settings_dynamic_system.list", if this prop is not set, then it will fetch images from default DSU list, which is set to be the Google ones (if OEM doesn't change the default behavior).
ref: https://cs.android.com/android/platform/superproject/main/+/main:packages/apps/Settings/src/com/android/settings/development/DSULoader.java;l=69
The default DSU list includes DSU Packages multiple Android versions, i think DSU Loader filters available DSU Packages depending on current Android version due compatibility.
I've tested on this device that runs Android 12, and seems that DSU Loader only shows packages higher than my current Android version.

About discarding:
To discard, from device, reboot to original OS, wait for DSU notification, and tap on discard
To discard, rooted device, reboot to original OS, open DSU Sideloader, tap on "discard"
To discard, reboot to original OS, from adb: adb shell gsi_tool wipe
To discard, reboot to original OS, from local shell (should work as shell/adb or root authority): gsi_tool wipe

If original OS rooted then do I've to root the GSI again or it automatically rooted as well?

It depends on root solution and GSI, modern root solutions (like Magisk and KernelSU) commonly provides root to Android by modifying something inside boot partition, when installing a GSI, only system partition will be replaced, which means that the installed GSI via DSU will boot using your device's original boot partition, if boot partition holds a root solution, then installed GSI should be also rooted, however, there is a problem, some GSI may come rooted out-of-box with a builtin root solution, in those cases, the root solution you have inside boot partition may conflict with the one present on GSI, so, in this case, to use root properly, you should remove the builtin root solution that come with the GSI.

After restart from GSI to original OS, I noticed I can't toggle on/change "Userdata size". Which means its 1 time action, to change it you've to install the GSI again. Add info regarding this in FAQ.
Thanks for your quick replies :D


qBittorrent SQLite database support

It would be nice if cross-seed supported qbittorrent's sqlite database.
Previous issue (https://github.com/cross-seed/cross-seed/issues/365) got a bit out of hand, so I am re-opening this feature request.

I would also greatly be interested in this!

Same here!

This one will definitely help and now 4.3.9 seems like very old.

I reopened #365


Typo

[Enter feedback here]
Because of that, the online approach is likely to consume more resources on the server side than the online approach.
..it should be...
Because of that, the online approach is likely to consume more resources on the server side than the offline approach.

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

ID: 21b15790-8233-1099-2d0c-c0abd4f5926d
Version Independent ID: 9a72e924-c89a-c236-33f2-2d72136e4f94
Content: Configure column encryption using Always Encrypted with PowerShell - SQL Server
Content Source: docs/relational-databases/security/encryption/configure-column-encryption-using-powershell.md
Product: sql
Technology: security
GitHub Login: @jaszymas
Microsoft Alias: jaszymas

@CarlosAugustoDeSouzaJunior -- Carlos, thank you for catching this.  I am updating the article.