Add toolchain support for Scala plugin

Context
Toolchain support for scala is/was missing
This takes inspiration from the groovy PR. Adds support for ScalaPlugin and ScalaDoc task
Some sample outputs:
Toolchain detection
Found the following JVMs:
    AdoptOpenJDK 11.0.10  - /Users/rperezalcolea/.gradle/jdks/jdk-11.0.10+9/Contents/Home
    Amazon Corretto JDK 1.8.0_265  - /Users/rperezalcolea/.sdkman/candidates/java/8.0.265-amzn
    Zulu JDK 1.8.0_265  - /Users/rperezalcolea/.sdkman/candidates/java/8.0.265-zulu
    Zulu JDK 1.8.0_242  - /Users/rperezalcolea/.sdkman/candidates/java/8.0.242-zulu
    Zulu JDK 1.8.0_252  - /Users/rperezalcolea/.sdkman/candidates/java/8.0.252-zulu
    Zulu JDK 11.0.7  - /Users/rperezalcolea/.sdkman/candidates/java/11.0.7-zulu
    Zulu JDK 11.0.11  - /Users/rperezalcolea/.sdkman/candidates/java/11.0.11-zulu
    Zulu JDK 11.0.10  - /Users/rperezalcolea/.sdkman/candidates/java/11.0.10-zulu
    Zulu JDK 11.0.6  - /Users/rperezalcolea/.sdkman/candidates/java/11.0.6-zulu
    Zulu JDK 13.0.2  - /Users/rperezalcolea/.sdkman/candidates/java/13.0.2-zulu
    Zulu JDK 14.0.1  - /Users/rperezalcolea/.sdkman/candidates/java/14.0.1-zulu
    Zulu JDK 16  - /Users/rperezalcolea/.sdkman/candidates/java/16.0.0-zulu
    Zulu JDK 16.0.1  - /Users/rperezalcolea/.sdkman/candidates/java/16.0.1-zulu
> Task :compileJava NO-SOURCE

Running compilation:
  501 14173 14115   0  6:34PM ??         0:01.20 /Users/rperezalcolea/.sdkman/candidates/java/16.0.0-zulu/bin/java @/Users/rperezalcolea/Projects/github/gradle/gradle/intTestHomeDir/distributions-jvm/.tmp/gradle-worker-classpath17437237116099633258txt -Xmx512m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Worker Daemon 1'

scaladoc
Successfully started process 'Gradle Worker Daemon 1'
Started Gradle worker daemon (0.381 secs) with fork options DaemonForkOptions{executable=/Users/rperezalcolea/.sdkman/candidates/java/16.0.0-zulu/bin/java, minHeapSize=null, maxHeapSize=null, jvmArgs=[], keepAliveMode=SESSION}.

Some screenshots

opportunities
AbstractScalaCompile has methods such as configureCompatibilityOptions which could be re-used for groovy compilation. Currently the method exists in the language-java project. Maybe this should be moved to language-jvm so it is re-usable. But that might mean moving some internal compilation classes.
Happy to address this in this PR on in another
Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[x] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[x] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[x] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[x] Ensure that tests pass sanity check: ./gradlew sanityCheck
[x] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

heads up @ljacomet :)

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

Hi @ljacomet ,
Fixed missing @Incubating annotation which broke the API. Also added changes to XMLs and adocs

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

Hi @ljacomet
It seems CI is failing with https://ge.gradle.org/s/zpm6tl2lhkeyg
  | org.gradle.execution.taskpath.ProjectFinderByTaskPath$ProjectLookupException: Project 'functional' not found in root project 'gradle'. |
-- | -- | --

doesn't seem related to my changes
Either way, I updated the branch with latest on master

@bot-gradle test QF

OK, I've already triggered QuickFeedback build for you.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@rpalcolea @ljacomet Note there is an error in asciidoc check:
# Valid links are:
# * Inside the same file: <<(#)section-name(,text)>>
# * To a different file: <<other-file(.adoc)#section-name,text>> - Note that the # and section are mandatory, otherwise the link is invalid in the single page output
#
# The checker does not handle implicit section names, so they must be explicit and declared as: [[section-name]]
ERROR: scala_plugin.adoc:63 Missing section reference for link to toolchains.adoc
    The `ScalaCompile` and `ScalaDoc` tasks can also leverage the <<toolchains.adoc#,Java toolchain support>>.

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

Hi @blindpirate, good call
I think https://github.com/gradle/gradle/pull/17494/commits/026f765289bee66f6a965b90f7da7305e2714f36 should take care of it
VFS> Statistics since last build:
VFS> > Stat: Executed stat() x 0. getUnixMode() x 0
VFS> > FileHasher: Hashed 0 files (0 bytes)
VFS> > DirectorySnapshotter: Snapshot 0 directory hierarchies (visited 0 directories, 0 files and 0 failed files)
Received 35 file system events since last build while watching 1 hierarchies
Virtual file system retained information about 31052 files, 2023 directories and 84 missing files since last build
Type-safe project accessors is an incubating feature.

BUILD SUCCESSFUL in 11s
259 actionable tasks: 21 executed, 238 up-to-date
Received 33 file system events during the current build while watching 1 hierarchies
Virtual file system retains information about 31052 files, 2023 directories and 84 missing files until next build
VFS> Statistics during current build:
VFS> > Stat: Executed stat() x 1,076. getUnixMode() x 0
VFS> > FileHasher: Hashed 0 files (0 bytes)
VFS> > DirectorySnapshotter: Snapshot 2 directory hierarchies (visited 13 directories, 52 files and 0 failed files)

OK, I've already triggered a build for you.

Pre-tested commit build cancelled.

Thanks @rpalcolea
There's some issues in CI, I'll take care of it.
@bot-gradle test and merge

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.

@bot-gradle test and merge

Pre-tested commit build cancelled.

OK, I've already triggered a build for you.


Lazy, memoized key set in ObjectFlatteners.

Useful for two reasons. First, we don't need to recompute the key set on every call to keySet(), size(), etc. Second, because when dimension discovery is not enabled, the parser requests the key set but does not call any methods on it. When the key set is lazy, we can avoid computing it entirely.
Benchmarks:
Benchmark                         Mode  Cnt     Score    Error  Units
JsonLineReaderBenchmark.baseline  avgt    5  2055.294 ± 28.688  us/op [before]
JsonLineReaderBenchmark.baseline  avgt   25  1755.839 ±  4.062  us/op [after]
JsonLineReaderBenchmark.baseline  avgt    5  1505.401 ± 19.889  us/op [this patch + #15681]

Going to mark this a draft while exploring ObjectFlattener more eager, which would solve the problem a different way.


Lula-Action Lint Loop Multiple File Paths

Looking at how to take multiple file paths and pass all of them into the Lula lint action to reduce CI runtime and complexity of CI.
Aiming to make the changes through the action and CI workflows to prevent code change to Lula as this may not be useful for Lula specifically.
Draft PR that has a working version:
https://github.com/defenseunicorns/lula-action/pull/4

Functionality moved directly into Lula


Output Filename

Is possible, using cli, to add on the output filename some value?
An example:
I've an SVG called image.svg. I want convert it in different sizes png 512x512, 256x256 and so on. I want my output file to have as name<EMAIL_ADDRESS><EMAIL_ADDRESS>and so on.
This is what I'm actually doing:
  "scripts": {
    "convert_512": "convert-svg-to-png --width 512 --height 512 --filename<EMAIL_ADDRESS>./*.svg",
    "convert_256": "convert-svg-to-png --width 256 --height 256 --filename<EMAIL_ADDRESS>./*.svg",
...

Sorry for taking so long to get back to you. There's currently 2 ways of converting files as quoted from the README:

Pass SVG files to be converted to PNG files as command arguments

A glob pattern can be passed
Each converted SVG file will result in a corresponding PNG with the same base file name (e.g.
image.svg -> image.png)

Pipe SVG buffer to be converted to PNG to command via STDIN

If the --filename option is passed, the PNG will be written to a file resolved using its value
Otherwise, the PNG will be streamed to STDOUT

This means that you could use the second approach and simply pipe in the SVG data via cat or something. You just need to drop the ./*.svg part as this is resulting in the first approach being followed, thus ignoring the --filename option.


SQS scaler processes float target queue length in a weird way, e.g. 6.5 would result in 5 on hpa object

Report
SQS scaler doesn't seem to work well with float queueLength. The documentation doesn't say it has to be integer though. A specific bug is that setting 6.5 as target queue length on KEDA scaled object resulted in a target value 5 set on the underlying HPA object (not sure how it selected that). Float values are supported for other scalers like Cloudwatch and would help here a lot too, since the system seems quite sensitive to the target value and even 0.5 difference can make replicas flap.
Expected Behavior
The value 6.5 is set on HPA
Actual Behavior
The value 5 is set on HPA
Steps to Reproduce the Problem

Create/pick a setup with SQS-queue-based scaler.
Set the target queueLength to a float value.
Observe the incorrect value set on the HPA object.

Logs from KEDA operator
No response
KEDA Version
None
Kubernetes Version
1.24
Platform
Amazon Web Services
Scaler Details
SQS
Anything else?
I couldn't find a version of KEDA. Please, let me know if the bug was already fixed in some versions.

Hello,
That behaviour (defaulting to 5) is done because of this code:
https://github.com/kedacore/keda/blob/cdbcb9fe7e77aa4b35624ae9813b00b2c2200d70/pkg/scalers/aws_sqs_queue_scaler.go#L95-L103
Basically, you should see an error in the logs saying that.
About supporting float numbers, SQS doesn't support float numbers, all the scalers where float are supported say it explicitly.
Should it support float numbers? Honestly IDK, SQS queues can't have float messages as message count is implicitly an integer (and that's why SQS scaler doesn't support it now), but once you have more than 1 instance, the average value is float, so maybe it makes sense... 🤷
Are you willing to open a PR adding support?

Thanks for the explanation! I'll figure out the logistics and try to work on a PR.


KFServing CI cluster creation permission issue

/kind bug
What steps did you take and what happened:
Activating service-account ...
Activated service account credentials for<EMAIL_ADDRESS>Creating cluster zng-presubmit-e2e-1042-c1d4684-6048-fc7e ...
WARNING: Newly created clusters and node-pools will have node auto-upgrade enabled by default. This can be disabled using the `--no-enable-autoupgrade` flag.
WARNING: Starting with version 1.18, clusters will have shielded GKE nodes by default.
WARNING: The Pod address range limits the maximum size of the cluster. Please refer to https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr to learn how to op
timize IP address allocation.
This will enable the autorepair feature for nodes. Please see https://cloud.google.com/kubernetes-engine/docs/node-auto-repair for more information on node autorepairs.
Machines with GPUs have certain limitations which may affect your workflow. Learn more at https://cloud.google.com/kubernetes-engine/docs/how-to/gpus
ERROR: (gcloud.beta.container.clusters.create) ResponseError: code=403, message=Required "container.clusters.create" permission(s) for "projects/kubeflow-ci".

What did you expect to happen:
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
Environment:

Istio Version:
Knative Version:
KFServing Version:
Kubeflow version:
Kfdef:[k8s_istio/istio_dex/gcp_basic_auth/gcp_iap/aws/aws_cognito/ibm]
Minikube version:
Kubernetes version: (use kubectl version):
OS (e.g. from /etc/os-release):

/cc @jlewi

@jlewi what happened to the permissions here?

See testing/issues#749 permissions to create test infra in kubeflow-ci were removed.
@kubeflow/kfserving-owners you should also take a look kubeflow/testing#737 and come up with a plan for ensuring CI for your projects.

@yuzisun  See comments: https://github.com/kubeflow/community-infra/pull/10#issuecomment-679459497
It looks like the project kfserving already exists which is why it can't be created and why you don't have access; I think its owned by the google.com org; probably created by @ellistarn .
It looks like there's already a kfserving-test project in kubeflow.org so you might just be able to use that. I believe you have access to it.

thanks @jlewi ! I have the access to kfserving-test project, currently KFServing creates a test cluster under kubeflow-ci project https://github.com/kubeflow/kfserving/blob/master/test/scripts/create-cluster.sh#L29 for running e2e tests  and looks like we need to mount a service account secret for the new project on argo workflow if moving to the kfserving-test project. I guess I need to get the access to kubeflow-ci project and create the secret there?

@yuzisun You shouldn't need to create any new secrets. The pods should be executing with some appropriate GSA. If you look at your original bug report they are using the GSA<EMAIL_ADDRESS>So if you want that GSA to be able to create resources in your project e.g. kfserving-test  you will need to modify the IAM policy of project kfserving-test to grant the GSA kubeflow-testing@ appropriate priveleges.
So you shouldn't need to modify the CI infrastructure.
That said if for some reason you do need to modify the shared infrastructure. You can reach out to the folks listed in
https://github.com/kubeflow/internal-acls/blob/master/ci-team.members.txt
As noted in kubeflow/testing#737 CI infrastructure is maintained by 20% and you should calibrate your expectations accordingly.

@jlewi looks like I need the permission to set IAMPolicy for kfserving-test project.

@jlewi same for me, don't have permission to change IAM.

The best thing to do would be to manage this project using GitOps.
The project is already inside the community folder.
@yuzisun Please update https://github.com/kubeflow/community-infra/tree/master/prod/namespaces/kfserving  to manage this project. Change the project and namespace to kfserving-test.
You probably want to set the deletion policy to abandon.
https://github.com/kubeflow/manifests/blob/c429076246114eaaed2e4b2592aeb8dd3b269784/gcp/v2/cnrm/gcp-services.yaml#L7
Add IAMPolicyMembers to grant the appropriate service account permissions. Add IAMPolicyMembers to grant kfserving folks permissions as needed.
We should try to avoid granting individuals OWNER permissions. We should aim to use GitOps as much as possible to leave a paper trail.
Attaching current IAM policy for reference.
kfserving-iam-policy.txt

Thanks @jlewi for the instruction. I have granted the kfserving-ci service account with the edit role, can you help take a look?
https://github.com/kubeflow/community-infra/pull/12/files

we are going to migrate KFServing CI to AWS https://github.com/kubeflow/kfserving/issues/1160


FstCodec

String deserialization with high concurrency "{}"  or Object reference  "[com.game.logical.global.bean.DropRateData@2ab839d5]"

FstCodec is deprecated. Please use MarshallingCodec instead.

MarshallingCodec is three times larger than FstCodec serialization

As alternative you can use Kryo5Codec. You can also try to use compression codec like SnappyCodecV2 or LZ4Codec.

Can we use Kryo5Codec to read old data which use FstCodec?

You need to extend Kryo5Codec class


Implement Zip streaming

Directory Lister Version
3.12.3
PHP Version
8.1
PHP Extensions
No response
Web Server
Apache
Describe the Bug
The current Zip implementation is simple and universal (since this is using a native PHP class). But it has the following issues:

Needs to buffer the whole Zip to a temporary file
Waits for the Zip to be created, possibly creating timeouts when reverse proxies do not allow long requests (looking at you Cloudflare, but this is a bad practice to have long requests anyway)
Takes necessarily at least the same time as a potential streaming implementation (because it needs to be compressed, then stored, then sent)
Cannot control the compression (at least, not in the config as of now)

My proposition would be to use the ZipStream-PHP library, since they reimplemented the Zip specification in PHP compatible with streamed responses. A few details:

The config will need to be updated
The minimum PHP version will need to be bumped to 8.1
I imagined 3 possibilities:

Zip is disabled
Compressed Zip (deflate)
Uncompressed Zip (store)

For the 3., it would even be possible to estimate the size of the Zip, allowing the browser to display a proper progress (it is unfortunately not possible for compressed Zip for obvious reasons).
An interesting side effect to this would be that #1050 is no longer needed (at least for Zip files).
I volunteer for the implementation, but I just wanted to be sure those “details” are OK for the project. Are those acceptable?
Thank you for this project!

Streaming the Zip response is a good idea. I also like the option of compressed vs uncompressed Zips as well. However, bumping the minimum PHP version to 8.1 is a no-go.
Directory Lister aims to support all currently supported PHP versions. This means we need to support PHP 8.0 until at least November of this year. Honestly, I even procrastinated on merging #1043 until today because I was hesitant to drop support for PHP 7.4, but it was time.
That being said, is there some way we can accomplish this without dropping PHP 8.0 support for now? Directory Lister is built on Slim PHP, maybe there's something in the framework that can help us with this?
Also, thank you for taking the time to discuss these changes in advanced. I'd like to support this feature and would have felt bad if you put in a lot of work that would need to be redone.

Apparently there is nothing in Slim for that (https://discourse.slimframework.com/t/slim4-output-buffering-large-files-zip-streaming/4917).
The previous version used to support PHP 8.0 (so it's the 2.0 one). We are not losing many features, maybe just a better size estimation that was just implemented inside the code, but they put an example in their documentation for a basic one. And they  will still maintain it for bug fixes and security patches, so it seems a good middle ground for me.
You're welcome, I did this because I also wanted to not lose time and open the discussion on it!

Using the 2.X version of ZipStream-PHP seems like it will work.


Allow one-to-many mappings in the renderer

The current rendering pipeline supports many-to-one mappings (including one-to-one) ie endpoint to process, process to container, container to image.
The pipeline doesn't allow us to go in the opposite direction, for instance enrich processes with container info, or containers with image info.  We hack this up with custom renderers (see #437 ContainerWithImageNameRenderer and ProcessWithContainerNameRenderer) which do two render passes and then do custom lookups.
I propose we generalise this by allowing mappers to emit intermediate keys, not merging RenderableNodes with the same intermediate keys, and allowing mappers to accept multiple RenderableNodes with the same intermediate key.  The MapFunc prototype would become:
func (key string, RenderableNodes) []struct{key string, RenderableNode}

Current behaviour would be provided by a special 'Reduce' Mapper, which would merge together all the RenderableNodes with the same intermediate key.
Then, to implement ProcessWithContainerNameRenderer, the ProcessRenderer would emit the Container ID as the intermediate key, and the next Mapper would receive all the Process for a given container and the container, where it could then do the arbitrary enriching and emit a set of nodes for the processes.  It would look something like:
ProcessRenderer   -> {containerid: [n]processes} -
                                                  |->  ProcessContainerRenderer -> {processid: [1]process}
ContainerRenderer -> {containerid: [1]container} -

This would bring out existing Map/Reduce rendering pipeline much closer to real Map/Reduce.  As part of this, we should rename the ReduceRendered to be a MergeRenderer, to prevent (more) confusion.

This was done in e4970f9214d4245104a2eb84ed7fc584c5b49547


Add render_surface/1 and compile_surface/2 test helpers

This PR addresses something that has been bothering me for a while which is the amount of tests we have that depends on render_live/2. The problem with render_live/2 is that it creates a module (LiveView) on the fly for each test, consequently, it's very slow and it's making the test suite take much longer than is should. Just to give you an idea of the problem, currently, the tests for the form controls alone are consuming 60% of the time when running the whole suite.
In general, from now on, render_live/2 should be used sparingly and only for tests that requires either a parent LiveView or some complex interaction between components, e.g. testing events, changing state, etc. Unfortunately, we couldn't use phoenix's built-in render_component/3 because surface components require some additional setup.
This PR introduces a new render_surface_component/3 that should be used for most of the cases we have when testing stateless components (like form controls) as well as when testing live component's rendering (not events and their side effects).
After this PR is merged, I'll start migrating most of the tests to use the new function. Since we have lots of tests in this situation, any help with that task will be appreciated. I'll also review what we have in test_helper.exs and maybe remove some functions or move them to the new Surface.LiveViewTest module. This way those functions can be used by other users in their own tests.
@Malian, @miguel-s and @alexandrubagu since you implemented most of the existing form controls, I'd love to hear your thoughts on this one. Does any of you see any problem with this new approach?

Related to #109.

I like that render_surface_component/3 mirrors LiveView's render_component/3 and so does not require to re-learn how to test components (initially I was somewhat confused with render_live/2).
Obviously improvements in speed are always welcome!
@msaraiva will render_surface_component/3 also be the recommended way of testing surface components for users of the library?

What I like with the current implementation in tests is that it clearly shows how to use Surface. With the new approach, we lose the "tests as documentation" behaviour.

@Malian I agree. It would still be very nice to have something like:
  html = render_surface(...) do
    ~H"""
    <Link label="user" to="/users/1" />
    """
  end

But without the need to create a module. I'm doing some experiments and it's feasible. I'll have to submit a small PR to Phoenix but it's possible to do a temporary solution until it gets merged.

will render_surface_component/3 also be the recommended way of testing surface components for users of the library?

Well it think we could provide both render_surface_component/3 and render_surface/1. I'd prefer the latter for the same reason @Malian already mentioned.
I'll get back to you as soon as I have render_surface/1 ready. Then we can decide which one should be the "recommended way" of testing surface components.
Thanks for the inputs!

Hi folks!
I replaced render_surface_component /3 with a new render_surface/1 macro which is not only way way faster than render_live/2 (since it doesn't create modules) but also allows us to pass Surface's code, consequently it and has no limitation regarding any type of slot or contexts. It also does not require the warn: false when defining aliases anymore.
Example
html =
  render_surface do
    ~H"""
    <Link label="user" to="/users/1" />
    """
  end

assert html =~ """
       user
       """

This should be the recommended way to test any component except for cases that depend on the existence of a parent live view, e.g. testing events on live components or live views and their side-effects or when you need to test compile-time errors/warnings.
Feedback is welcome!

I tested on my pull request #230 and everything seems to work fine. My first findings are that the tests are much more clearer and so are the intentions. Good job!
I suggest to merge your proposal before #230 to reduce your workload. I'll adapt my pull request. I am also available to update the tests as soon as this pull request has been merged.

Hi!
I tried out render_surface/1 in my project and it makes for a very nice testing experience. Also the speed improvemens are quite noticeable.
However, I'm not too sure about the setup. to get it to work I added the following imports to my test file (copied from Surface.ConnCase):
import Phoenix.LiveViewTest
import Phoenix.LiveView.Helpers, only: [live_component: 3]
import Surface, only: [sigil_H: 2]
import Surface.LiveViewTest

Did I miss something or is this the intended way? If so should we add a use macro to Phoenix.LiveViewTest to clean this up?
Awesome work!

Sorry for the late response. I was offline for most of the day today so I didn't have much time to implement all changes I wanted but was able to commit at least the minimum we need for the new testing API.

I'm not too sure about the setup. To get it to work I added the following imports to my test file (copied from Surface.ConnCase)... Should we add a use macro to Surface.LiveViewTest to clean this up?

@miguel-s I did that. The user should do this now:
      import Phoenix.ConnTest
      use Surface.LiveViewTest

      # The default endpoint for testing
      @endpoint TheUserEndpoint

Or create a ConnCase as we did.
All the functions/macros we need for tests are now in Surface.LiveViewTest. As soon as we get rid of all render_live calls, we can clean up the test_helper.exs file.
The basic rules to use the new API are:

Use render_surface for all tests of stateless components or when we want to test the regular rendering of a live component. This should cover 80-90% of our tests.
Use compile_surface to test compile-time errors/warnings
Use compile_surface + Phoenix.LiveViewTest.live_isolated/3 to all other cases where a test-specific LiveView is required, i.e, you'll not share the LV between tests. Otherwise, it's better to define the module inline and use it in various tests, if possible.

The reason I didn't create a separate function for #3 is that I want to be explicit to the user that a the code will be compiled so there's an extra cost.

@Malian feel free to move on with #230. We should have a much better experience when writing tests from now on. There's still a lot of tests to migrate but as you can see most of them are quite straightforward. The ones I already migrated along with the other changes have already cut the test suite's time in 50% on my machine so it's definitely a big deal.
In case anyone wants to start migrating tests to the new API, please let us all know so we don't waste time working on the same files. I'll start working on these 3 now:

test/directives_test.exs
test/components/live_redirect_test.exs
test/components/live_patch_test.exs

I finished with test/components/form/checkbox_test.exs to try out the new API.
Tomorrow I can work my way down the test/components/form folder.


Widget Support for Input.Toggle and Input.ChoiceSet

Suggested new feature or improvement
I am unable to use the adaptive card elements Input.Toggle or Input.ChoiceSet in the widgets that I create. These are card elements for Adaptive Card Version 1.5
Scenario
Users can create new widgets that utilize these elements.
Additional details
No response

We were tracking this with #644. The only reason I want to use that one going forward instead of this one is that we specifically mention that issue number in a TODO in the code, so I'm going to put the content of this over there.

Duplicate of #644


graph/encoding: move basic encoding API into new encoding package

This is the first of two PRs to harmonise the graph encoding API. The next will change the Unmarshal methods to be SetAttribute. The API is still in flux.
@vladimir-ch @mewmew Please take a look.

Updates #61.

LGTM. Great that you are putting the effort into harmonising the API.


Release Google.Cloud.MediaTranslation.V1Beta1 version 2.0.0-beta04

Changes in this release:
New features

Change netstandard2.1 target to netstandard2.0 (commit 82bea85)

Created release for Google.Cloud.MediaTranslation.V1Beta1-2.0.0-beta04


Update broken links in README in accordance with issue #103

As discussed in issue #103, I've removed the line referring to the list of missing exercises and updated the porting an exercise link.

Thank you! Let's wait for 48h for an update from above to #103 ;-)


Update README ktlint version to 0.43.2

Description

Checklist

[ ] tests are added
[ ] CHANGELOG.md is updated

thanks!


Move ADAravis detectors to ophyd-async

As discussed with @coretl, standard detectors should exist in ophyd-async instead of dodal.
Implementation of ADAravis OAV for i22, p38 at Diamond.
Fixes https://github.com/DiamondLightSource/dodal/issues/409 (after a release of ophyd-async)

@DiamondJoseph @coretl I'm not overjoyed at the separation of detector components across libraries. The fact that I have to have the writer/controller over in ophyd-async but assemble them in dodal is a bit cumbersome, especially if I want to update my code, I may have to do two PRs and an alpha release etc.
One thing that I think would help is to have an example assembly of these components in ophyd-async. In other words a more generic version of ADAaravisDetector in here https://github.com/DiamondLightSource/dodal/pull/421/files#diff-6b371b1b87d0470e413dd5e1fc0a50233e042ddf494229e8a7e22fc70d673c64R147-R201
To be clear, that is as well as rather than instead of. What do you think?

One thing that I think would help is to have an example assembly of these components in ophyd-async. In other words a more generic version of ADAaravisDetector in here https://github.com/DiamondLightSource/dodal/pull/421/files#diff-6b371b1b87d0470e413dd5e1fc0a50233e042ddf494229e8a7e22fc70d673c64R147-R201
To be clear, that is as well as rather than instead of. What do you think?

That sounds like a good idea, the only reason I don't want to put it in ophyd-async in the first place is because we don't want to put anything that relies on our naming conventions there.
Actually we could extend that idea even further, and make the HDFAravis class not know anything about naming conventions, e.g.
class HDFAravis(StandardDetector):
    def __init__(
        self,
        prefix: str,
        driver_suffix: str,
        hdf_suffix: str,
        ...
    ):
        self.drv = ADAravis(prefix + driver_suffix)
        self.hdf = NDFileHDF(prefix + hdf_suffix)
        super().__init__(
            controller=ADAravisController(self.drv, ...),
            writer=HDFWriter(self.hdf, ...),
            ...
        )

Then in dodal:
def oav():
    return HDFAravis("BL22I-EA-DET-01:", driver_suffix="DRV:", hdf_suffix="HDF:")

More typing, but clearer how the PV names are constructed...
What do you reckon?

At that point why not just
class HDFAravis(StandardDetector):     def __init__(         self,         driver: ADAravisDriver,         hdf: NDFileHDF,         ...     ):         self.drv = driver         self.hdf = hdf         super().__init__(             controller=ADAravisController(driver),             writer=HDFWriter(hdf, ...),             ...         )

Hmm, so then dodal would have:
def oav():
    prefix = "BL22I-EA-DET-01:"
    return HDFAravis(ADAravis(prefix + "DRV:"), NDFileHDF(prefix + "HDF:"))

I guess that extends to extra plugins reasonably nicely too...

device_instantiation still requires prefix, name as arguments, but with those passed too

tests/epics/demo/test_demo.py::test_mover_moving_well seems to be reliably slower than expected on Python 3.10...

This change no longer requires #249 and instead passes AravisTriggerSource as a String. #249 will be handled later


Allows for php7 to be installed

Probally some straglers around (when using php7) but is backwards compatible to php5 so no issues should be there.  Known issue is sodium is not set up for 7 yet (just havent done it yet not sure if theres technial issues yet)

Oh yeah and refactoring nessasary but it works


Update windows requirements

Since WSL2 have been backported to windows HOME1903 and 1909 ( started to be available for HOME from 2004 version )
docker station is working on windows HOME and not only PRO

Thanks for the changes!

Thanks for the changes!


Add tmlsavedirectory to args

in my testing it worked. Try removing the hidden config value so that it only uses the command line arg, it will still save to the configured value.

You mentioned something on discord about the server complaining or erroring, so I wondered


Add a generic end-point for moving repository paths in the StoragesConfigurationController

Task Description
We need to create an end-points for moving repository paths. The code should be located in the StoragesConfigurationController class and a separate form class should be created so that it is able to handle the JSON below. Be sure to check our How to write Spring Controllers guide to see how we return errors. There is some partial implementation of this in the MavenArtifactController which could be useful to speed-up the development of this feature. The existing implementation should be refactored as much as possible and made generic enough that it works for all layout providers.
Moving a path to another storage/repository
Action:
Moves recursively src.path into dest.path.
Form validation:

The submitted form must have the following fields: action, 'overwrite', src, dest.
Two validation groups:

Moving to same type repository - action, overwrite, src*, destStorageId, destRepositoryId are all required; destPath must be null/empty, because the artifacts are expected to be in a specific location depending on the repository type.
Copying to raw repositories - all fields are required (action, overwrite, src*, dest*)

Before actually copying/moving the path, check if the path already exists - if it does and overwrite is false - return status code 400 and a message saying the path already exists.

The same as copying, but it requires destPath to be present as well.
POST /api/configuration/strongbox/storages/move

{
   'action': 'move',
   'overwrite': true/false,
   'srcStorageId': 'storage0',
   'srcRepositoryId': 'some-repository-id',
   'srcPath': 'path/relative/to/the/a/directory/or/file',
   'destStorageId': 'newStorageId',
   'destRepositoryId': 'some-other-repository-id',
   'destPath': 'the/name/of/the/new/path' // required field
}

Tasks
The following tasks will need to be carried out:

[ ] Implement end-point for moving paths
[ ] Add test cases checking the above for the following layout providers:

[ ] Maven
[ ] NuGet
[ ] Raw
[ ] PyPi

Task Relationships
This task relates to: #1399, #1401
Help

Our chat
Points of contact:

@carlspring
@fuss86
@sbespalov
@steve-todorov

Hi,
Can I take this one?

Could you please pick another task that is not on hold?


Fixed an off by one error that would have excluded a null byte.

Also for some reason two spaces got stripped off accidentally (Atom does it automatically I think).

Fixed it to include the null byte in the copy and it will also account for the size of a character in the malloc/copy.

Hi, great, thanks alot! Could you please reissue the pul-request to the dev-branch? That way we'll have Jenkins do an automatic install / build /  test from scratch.


Fixed #27515 -- Make AuthenticationForm use the username length from the user model

ticket

This doesn't look correct since modifying only the widget value won't enforce server-side validation. Also tests and documentation updates are required.

@timgraham are you sure validate and docs? https://github.com/django/django/commit/780bddf75b93784470a2e352ed44ee35a751d667

Yes please.

@timgraham Thank you so much,still i not sure for docs what is needed, please test and feedback,
Thanks again,

@timgraham Thanks of your patience, please review

@timgraham change code ,
display error,if you think issue on style code , please modify PR, Thanks
Please correct the error below.

Ensure this value has at most 150 characters (it has 200).

You need to review your work better or increase your Django knowledge before contributing.
@ti bad comment,ok any contributing,


imageCache API doc improvements

Here's inspiration for what we should add to the API docs (which I put on StackOverflow):

Create a class that inherits from WidgetsFlutterBinding. Override createImageCache on that class to return the ImageCache implementation of your choice. Call the constructor on that class before you call runApp.
There's one binding per application. The first binding (subclass of BindingBase) that is created gets to be that binding. Calling runApp() instantiates the WidgetsFlutterBinding binding, which is usually what you want. One of the classes that WidgetsFlutterBinding mixes in, the ServiceBinding, introduces createImageCache as a way to let you override the image cache. It calls that method, and sets the global imageCache to whatever that method returns.

Something should be added to ImageCache, createImageCache, imageCache, ServicesBinding.imageCache.

One of the classes that WidgetsFlutterBinding mixes in, the ServiceBinding, introduces createImageCache as a way to let you override the image cache.

Based on the last alpha version, this logic is in PaintingBinding not ServicesBinding.

Regarding docs on the whole, it would be really helpful if there was a passing mention of ImageCache existing at the top level Image widget documentation. I just found out this existed after a few days of being confused as to why my widget wasn't updating when deleting and re-saving over a file loaded by Image.file.

Is there any news?

Closing as this seems fixed with the addition of the sample in ImageCache and crossreferencing in createImageCache, imageCache, and PaintingBinding.imageCache.


Seeing some errors in the console

log is here http://pastebin.com/fcjTAC0S
Don't know if this is important or not just thought I would throw this out there .
Thanx -Crunk

This is harmless but I will make sure this warning goes away in the next version anyway as it is a bit spammy in the logs.


Add Unit Test infrastructure

We should have unit tests for our features, integrated with the CI pipeline.

And of course, nice badges in the readme.md :)

https://github.com/i4Ds/Karabo-Pipeline/pull/62 doc here

@cvoegele can this be closed?


Adding onTrimStarted listener, Fixing FC if OnTrimVideoListener is not set.

Fixes issue #.

Adding onTrimStarted so that we can use this to open progress dialog while video is trimming in background
Fixing NullPointerExcepion if OnTrimVideoListener is not set.

Thanks


SecurityError in new canvas

When opening the sandbox or a game while using the new canvas, an alert appears saying "SecurityError: The operation is insecure. line: 5209"

This is not something that Firefox does normally for this kind of error; something on the page or in the userscript is launching an alert in response to the error.
This doesn't happen in the default canvas, so the error itself is caused by something in the new canvas. However, it is possible that Drawception itself causing the alert.
This is a minor inconvenience but it would be nice if (a) the error could be fixed or (b) if alert could be suppressed for this particular error if in fact the alert is launched by ANBT.
This does not affect the usability of the rest of the page.
I'm using Firefox 59.

So, this happens at the time new canvas is overwriting the current webpage?

Correct. As soon as the new canvas finishes loading,


Fix formatting issues and syntax errors in code

Following the recent thread on https://twitter.com/arthrvdv/status/1727729430737342791 and https://github.com/StefanMaron/BusinessCentral.LinterCop/discussions/352

Remove semicolon at end of procedures

Do we really want to change the archived NAV patterns in their original form?

@waldo1001 @ajkauffmann @JesperSchulz - PR has been waiting for a 3rd blessing for a lil while now?
As to 'changing the NAV patterns', which is always a valid check-in, I think that's a typo in conversion, as in NAV, procedures didn't have written lines, they were non-editable "heading" components editable via a separate UI, not plaintext.  No semicolons would have been possible, so I think this is ok.


[Bug]: OpenAILike when querying with ReActAgent gives ValueError: Could not parse output:  Thought: The current language of the user is: en. I need

Bug Description
I assigned an open ai compatible server using OpenAILike using:
from llama_index.llms.openai_like import OpenAILike llm = OpenAILike(model="TheBloke/Mistral-7B-Instruct-v0.1-AWQ", api_base="https://myserver.net/v1", api_key="fake")
This successfully gives outputs when questions are asked using chat method. For e.g:
response = llm.complete("Who is the ceo of google") print(str(response))
Successfully gives the result: ? Sundar Pichai is the CEO of Google.
But when an agent is created as mentioned in the llamaindex docs (https://docs.llamaindex.ai/en/stable/examples/agent/multi_document_agents-v1/?h=fnretrieveropenaiagent) and we query something error is popped up
ValueError: Could not parse output:  Thought: The current language of the user is: en. I need
The sample query i gave for my custom docs is:
`top_agent = ReActAgent.from_tools(
tool_retriever = obj_index.as_retriever(similarity_top_k=3),
system_prompt="""
You are an agent designed to answer informations about Reflexa.
Please always use the tools provided to answer a question. Do not rely on prior knowledge.\
""",
llm=llm,
verbose=True,
)
response = top_agent.query("Who created the company document for Reflexa?")
`

Version
v0.10.20
Steps to Reproduce
I followed this tutorial https://github.com/sugarforever/Advanced-RAG/blob/main/03_llama_index_multi_doc_agent.ipynb but replaced llm with openAILike module from llama-index
Relevant Logs/Tracbacks
No response

@jerinjoseph1 you have the LLM configured to only output a small number of tokens (it looks like it got cut off tbh)?
Either that, or the LLM just didn't follow instructions for the output format, and the react loop couldn't be parsed

Yes, you'r right. It was a mistake from my part, I missed the number of tokens part. Passing context_window argument to OpenAILike resolved the issue.


Transcoding?

Any plans to implement transcoding for the people that have flac music away from home to save data? Or even a cache/download option before leaving home?
Thanks

Yeah, I'll look into it

Thanks man. I love the look and feel of this server and app. Fantastic work!

I see you have enabled transcoding which is awesome. Kudos.
Will there be a way to enable/disable in the app say when on wifi or when off wifi? Maybe even a bit rate selector?
Thanks

I'm still working out the best way to handle transcoding, but for now, the only way to enable/disable it is with an env variable on the server


associative_scan failedLLVM ERROR with bf16

Python 3.10.12
PyTorch 2.1.0a0+32f93b1
Triton 2.2.0 and Triton 3.0.0
RTX 4090 and H100
tl.associative_scan works for fp32 and fp16. However, with bf16, I get the following error:
loc("/workspace/Mamba-MoE/notebooks/associative_scan/triton_test.py":26:35): error: invalid element type in packLLEElements. Expected 'i16' but got 'bf16'
loc("/workspace/Mamba-MoE/notebooks/associative_scan/triton_test.py":26:35): error: 'llvm.select' op failed to verify that all of {trueValue, falseValue, res} have same type
Pass execution failedLLVM ERROR: Failed to translate TritonGPU to LLVM IR.

Code to replicate issue:

import triton
import triton.language as tl
import torch

#os.environ["TRITON_INTERPRET"] = "1"
print(torch.__version__)
print(triton.__version__)

@triton.jit
def plus_fn(a, b):
    return a + b

@triton.jit
def cumsum_tt(X, H_0, Y, H, K: tl.constexpr):
    # Which block an I?
    pid = tl.program_id(0)
    kid = K * pid
    Ks = tl.arange(0, K)
    x = tl.load(X + Ks + kid)
    h_0 = tl.load(H_0 + Ks * 0 + pid, Ks == 0, 0)

    x = plus_fn(h_0, x)

    hs = tl.associative_scan(x, 0, plus_fn)
    y = hs

    # Write out K y's per block and 1 h
    tl.store(Y + Ks + kid, y)
    # Write out only the last value to H
    tl.store(H + Ks * 0 + pid, hs, mask=Ks == (K-1))

dtype = torch.bfloat16
ones = lambda *size: torch.ones(*size, dtype=dtype).cuda()
zeros = lambda *size: torch.zeros(*size, dtype=dtype).cuda()
arange = lambda n: torch.arange(n, dtype=dtype).cuda()
rand = lambda size: torch.rand(*size, dtype=dtype).abs().cuda()

@lijinpei : I see that your current solution is to cast bf16 to f32.  You also mention that "scan on bfloat16 [has] accuracy bugs" in test_core. I was wondering if you can expand on this.
Thanks

@lijinpei : I see that your current solution is to cast bf16 to f32. Is there any way to use bf16? You also mention that "scan on bfloat16 [has] accuracy bugs" in test_core. I was wondering if you can expand on this.
Thanks
For the "Is there any way to use bf16?" part, Keren and  Thomas comment on the pr that I should not blindly convert bf16 to fp32, and I have changed the pr to use bf16 computation.
For the "scan on bfloat16 [has] accuracy bugs" part, later I discovered that when convert to fp32, the mismatch is caused by input not properly truncated to bf16, after proper truncation, the "convert to fp32" way can pass all the tests. While 'cummax'(due to bf16 setp.cmp-op instruction not available on non-SM90 cards) and 'linear_recurrence'(not sure the reason) still not pass.

@lijinpei : I see that your current solution is to cast bf16 to f32. Is there any way to use bf16? You also mention that "scan on bfloat16 [has] accuracy bugs" in test_core. I was wondering if you can expand on this.
Thanks

For the "Is there any way to use bf16?" part, Keren and Thomas comment on the pr that I should not blindly convert bf16 to fp32, and I have changed the pr to use bf16 computation. For the "scan on bfloat16 [has] accuracy bugs" part, later I discovered that when convert to fp32, the mismatch is caused by input not properly truncated to bf16, after proper truncation, the "convert to fp32" way can pass all the tests. While 'cummax'(due to bf16 setp.cmp-op instruction not available on non-SM90 cards) and 'linear_recurrence'(not sure the reason) still not pass.

Thank you for your reply. Do you have more information on  bf16 setp.cmp-op instruction? Where is it being called in the code?

@lijinpei : I see that your current solution is to cast bf16 to f32. Is there any way to use bf16? You also mention that "scan on bfloat16 [has] accuracy bugs" in test_core. I was wondering if you can expand on this.
Thanks

For the "Is there any way to use bf16?" part, Keren and Thomas comment on the pr that I should not blindly convert bf16 to fp32, and I have changed the pr to use bf16 computation. For the "scan on bfloat16 [has] accuracy bugs" part, later I discovered that when convert to fp32, the mismatch is caused by input not properly truncated to bf16, after proper truncation, the "convert to fp32" way can pass all the tests. While 'cummax'(due to bf16 setp.cmp-op instruction not available on non-SM90 cards) and 'linear_recurrence'(not sure the reason) still not pass.

Thank you for your reply. Do you have more information on bf16 setp.cmp-op instruction? Where is it being called in the code?

the doc for the instruction is here https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#half-precision-comparison-
instructions-setp.
I think your code doesn't use this instruction, but a general scan/reduce like minimum/maximum could need this instruction.


#isNilOrEmpty

This method is added to Collection, Object, and UndefinedObject by a contribution but its use requires inclusion of that third-party package in the image and the runtime packaging process. It would be easier if it were in the base.

I'll think about this.
There's a smell to this message that I really don't like (and yes, I know it it appears in other Smalltalks). The clue to the smell is, why would I ever do this:
4 isNilOrEmpty
I don't see this has any business being implemented on Object. What does it mean? And, actually, from a philosophical point of view I don't really understand why is it on UndefinedObject either? You are asking something with no sense of arity whether it has an arity of zero. It's a bit like saying:
4 isEmpty
and we'd never dream of doing that, would we! It's in Dialect Abstraction Layer because that is David's stuff and he uses it for STS. I'll probably come around but let me mull it over.

I appreciate the discussion. I don't feel strongly about it but it was in some old code I inherited and when I loaded that package it conflicted with David's package. At that moment it seemed to me that if two different libraries add it then it would be easier to have it in the base.
The use-case is for objects that don't initialize string instance variables and want to see if there is a non-empty string. Having phrased it that way I can certainly sympathize with the "smell" objection. Though, just to push back gently on your example, would you ever write the following? ;-)
4 isNil
Though maybe you are saying that implementing it in UndefinedObject and Collection is sufficient?

Actually, I see that Pharo doesn't implement this but #isEmptyOrNil At least it only does it on Object and Collection though so it's better than our implementation of #isNilOrEmpty.
I believe there is a use for a DAL (Dialect Abstraction Layer) to help code written for other environments to run on Dolphin, but I've always seen the existing DAL as David's and haven't paid much attention to its contents. I think the best thing is to leave #isNilOrEmpty where it is and instead add isEmptyOrNil to join it in the DAL (maybe with a suitable comment that only the feeble minded would make use of it :-) ).
I did come across the exact situation as you - conflicts with loose methods in the DAL when loading in third party code. I think we may need to extend the packaging system to accept such clashes with a warning rather than an error and leave the original method in place. I reckon we can assume that a same named method in the same class will have identical functionality. We wouldn't be able to accept class name clashes in the same way though.
Going back to 4 isNil. I assume you're asking why we should implement #isNil on Object. Well the answer is because we are checking if any object is in a slot rather than specifically a collection. And it's needed for true lazy initialisation. When I've seen #isEmptyOrNil used in the past it has, as you, say been a part of a premature optimization of lazy initialisation. The believe being that leaving a nominally collection holding instance variable as nil is more efficient than setting it to be an empty collection. But since:
myCollection
    ^myCollection ifNil: [myCollection := #()]

always reuses a single instance of the same empty array there is no space saving by leaving it as nil.

Thanks for the discussion. The "smell" is bad enough to give me second thoughts.


Add sass extention to install instruction

Install instructions are pointing to "bower install startbootstrap-sb-admin-2" when it should point to "bower install startbootstrap-sb-admin-2-sass" or am I missing something here?

Thanks


Upload image/gifs

Hi! Is there any way to upload images or gifs using snoowrap? Something similar to https://praw.readthedocs.io/en/latest/code_overview/models/subreddit.html#praw.models.Subreddit.submit_image

To my knowledge we don't support it, but you should be able to use oauthRequest

I hate people who told me that this library is the best solution for nodejs, now I have to migrate to other library because snoowrap only supports link and text posts

There are projects like snoots in the works, but it is still in very early development


Adding a Desktop tab with novnc and a (minimal) xfce environment

This adds novnc in a navbar tab (not a vscode pane, though we can add that easily). The desktop environment is xfce4, because gnome-session seems to depend on a system-wide dbus running.

Okay, unless my last push screwed something up, this is ready to go! I've trimmed down XFCE4 as much as I can, and we are ready to roll!
The desktop:

angr-management in the browser:

Minor consideration: maybe we should pre-insert /challenges into the Qt and GTK lists of favorite locations.

Neat feature of xfce: it can save a session, and open up the configuration of applications at next launch. We could have this pop up for every challenge:


[Windows, CP-SAT, Python]

What version of OR-tools and what language are you using?
Version: master
Language: Python
Which solver are you using
CP-SAT
What operating system and version?
Microsoft Windows 10 Education 64bit
What did you do?
Steps to reproduce the behavior:
I attached the relevant models and a script to reproduce the error.
I build the master branch from source using visual studio 19 and make to test the fix for #1882
I still get the "Process finished with exit code -1073741819 (0xC0000005)"
About my model:
I have optimization problem with 2 objectives -
The first objective is makespan (equal to maximum of several variables)  (Model1Proto)
the second objective is completion time (equal to sum of a different set of several variables) (Model2Proto)
Model2Proto uses the optimized makespan of Model1Proto as a constraint, and takes the other resulting variables as hints.
Model1Proto runs without issues, but maybe it is useful for reference.
Model2Proto crashes when solved multiple times.
crashingmodel.zip

Works flawlessly on linux. Still investigating.
Laurent Perron | Operations Research |<EMAIL_ADDRESS>| (33) 1 42 68 53
00
Le mer. 4 mars 2020 à 17:33, DominikRoB<EMAIL_ADDRESS>a écrit :

What version of OR-tools and what language are you using?
Version: master
Language: Python
Which solver are you using
CP-SAT
What operating system and version?
Microsoft Windows 10 Education 64bit
What did you do?
Steps to reproduce the behavior:
I attached the relevant models and a script to reproduce the error.
I build the master branch from source using visual studio 19 and make to
test the fix for #1882 https://github.com/google/or-tools/issues/1882
I still get the "Process finished with exit code -1073741819 (0xC0000005)"
About my model:
I have optimization problem with 2 objectives -
The first objective is makespan (equal to maximum of several variables)
(Model1Proto)
the second objective is completion time (equal to sum of a different set
of several variables) (Model2Proto)
Model2Proto uses the optimized makespan of Model1Proto as a constraint,
and takes the other resulting variables as hints.
Model1Proto runs without issues, but maybe it is useful for reference.
Model2Proto crashes when solved multiple times.
crashingmodel.zip
https://github.com/google/or-tools/files/4288451/crashingmodel.zip
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/google/or-tools/issues/1909?email_source=notifications&email_token=ACUPL3N6BQET2XDNAPSVRIDRFZ7ERA5CNFSM4LBMWJFKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4ISOKK3Q,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACUPL3NSZFUHT2T4W7GLKPTRFZ7ERANCNFSM4LBMWJFA
.

I believe this is fixed.
Thanks for the report.


Can't poll or clear Deleted Items

Expected behavior
Polling Deleted Items should eventually terminate
Actual behavior
The app is and remains unresponsive. Deleted Items is very large on the device but empty on the server.
Steps to reproduce

Make a big Deleted Items
2.try to sync of clear local messages
3.profit

Environment
5.206
Android version:
6
Account type (IMAP, POP3, WebDAV/Exchange):
Imap3

During sync K-9 Mail will delete all downloaded messages in the local Trash folder if the remote folder is empty. Depending on the number of messages this can take quite some time.
You didn't provide any specific information like number of messages in the Trash folder, database size, how long you have waited, what device you're using… That makes it impossible to tell whether the behavior you're seeing is to be expected or maybe a bug.

I don't know where the database lives or how to tell how big it is. I was
waiting hours... Happy to try to provide more info.
On May 24, 2017 6:48 PM, "cketti"<EMAIL_ADDRESS>wrote:

During sync K-9 Mail will delete all downloaded messages in the local
Trash folder if the remote folder is empty. Depending on the number of
messages this can take quite some time.
You didn't provide any specific information like number of messages in the
Trash folder, database size, how long you have waited, what device you're
using… That makes it impossible to tell whether the behavior you're seeing
is to be expected or maybe a bug.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/k9mail/k-9/issues/2548#issuecomment-303899858, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABO6mjz9l3zIWA9ACk_KQhE4eqQ_RaHfks5r9N3UgaJpZM4Nl2vT
.

Oh, thousands of messages in the local folder, apparently back to January
of this year. None in the folder on the server.
Android says I'm using 250mb of data.
On May 24, 2017 6:49 PM, "Chris Kantarjiev"<EMAIL_ADDRESS>wrote:

I don't know where the database lives or how to tell how big it is. I was
waiting hours... Happy to try to provide more info.
On May 24, 2017 6:48 PM, "cketti"<EMAIL_ADDRESS>wrote:

During sync K-9 Mail will delete all downloaded messages in the local
Trash folder if the remote folder is empty. Depending on the number of
messages this can take quite some time.
You didn't provide any specific information like number of messages in
the Trash folder, database size, how long you have waited, what device
you're using… That makes it impossible to tell whether the behavior you're
seeing is to be expected or maybe a bug.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/k9mail/k-9/issues/2548#issuecomment-303899858, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABO6mjz9l3zIWA9ACk_KQhE4eqQ_RaHfks5r9N3UgaJpZM4Nl2vT
.

Enable 'Global settings > Display > Show account size', then navigate to the accounts screen. The storage occupied by an account will be displayed below the account name.

Got it. 210 MB.
On May 24, 2017 6:52 PM, "cketti"<EMAIL_ADDRESS>wrote:

Enable 'Global settings > Display > Show account size', then navigate to
the accounts screen. The storage occupied by an account will be displayed
below the account name.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/k9mail/k-9/issues/2548#issuecomment-303900492, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABO6mqoRdmSfnaVQedaUYjFSHQmuR9kMks5r9N7ogaJpZM4Nl2vT
.

Things were pretty much completely broken, so I used "Recreate data". It
took a while, but now the usage is down to 2.5MB, and things seem to be
working fine again.
On May 24, 2017 7:15 PM, "Chris Kantarjiev"<EMAIL_ADDRESS>wrote:

Got it. 210 MB.
On May 24, 2017 6:52 PM, "cketti"<EMAIL_ADDRESS>wrote:

Enable 'Global settings > Display > Show account size', then navigate to
the accounts screen. The storage occupied by an account will be displayed
below the account name.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/k9mail/k-9/issues/2548#issuecomment-303900492, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABO6mqoRdmSfnaVQedaUYjFSHQmuR9kMks5r9N7ogaJpZM4Nl2vT
.

Closing because we have no real performance targets here - if you make the folder big enough, yes it will take a while.


Maximum number of classes for object detection

Hi,
I was just wondering, is there a recommended maximum number of classes when doing object detection with Turi Create? (I have around 50) I understand that it is running YOLO (v2?) on Darknet, bun can't find any general recommendations.
Thanks in advance!
/Anders

Hi,
Just a comment. I have successfully trained an object detection model with 56 classes, i.e. there is no problem in training 50 - 60 classes. Many of my classes are very similar, but that does not become a problem. I used about 38.000 images with bounding boxes (after augmentation) and the training time took about 7 hours (on a EC2 p2.xlarge machine), but it all went well.

Hi @sejersbol, sorry for the really long delay here!
Unfortunately I do not know where the breaking point is, and of course it will depend on acceptable evaluation metrics and training data size.
From a technical point of view there is no hard limit and if you go to extremes there could be Core ML model size issues and memory issues during inferences. However, that will only happen for extremely large number of classes.
From a modeling perspective (which is a problem that will happen much earlier than the technical limitation) it is not as clear. As you increase the number of classes, you increase the risk of making classification mistakes. Although, the severity of a lot of the mistakes should simultaneously go down as you will have more and more classes that are naturally similar (breeds of dogs, etc.). The original YOLO9000 paper (https://arxiv.org/pdf/1612.08242.pdf) trained a model using 9000+ classes with reasonable results (lots of mistakes of course, but still impressive). They trained it on a combination of detection and classification data, so if they actually had detection data for all 9000, then results would presumably be even better.
In your experiment it sounds like 50-60 was OK (thanks for giving us a sample point!). Anything below 100 is definitely tried and true, as long as you have the data. However, will 300 do OK? Will 1000 do OK? Theoretically I would say yes, if you are able to provide enough training data and you adjust your expectation of what a good evaluation metric is, since you know you'll make more mistakes. For instance, for classification with 1000 classes, it is common to report top-5 accuracy (that is, the correct label is in your top-5 classes for a sample).

Thanks @gustavla for the really informative answer :-)
I did not expect that there was a simple answer to my question. You have presented some very nice guidelines for what to expect and I will be looking into the YOLO9000 paper. However, the first rule of thumb must be, anything under 100 classes will work if you have enough data. In my own experiment I have found that 56 classes with approximately 1000 bounding boxes per class is going to work out fine. Maybe less bounding boxes will work, but around 1000 per class definitely works (used image augmentation to get from 250 to 1000 - mirroring the images and bounding boxes). Thanks!


HUBComponentWithSelectionState: Remove doc comment about cells

Cells have automatic selection state handling, so no need to use the protocol for those.

@spotify/objc-dev

Current coverage is 93.27% (diff: 100%)

Merging #224 into master will not change coverage

@@             master       #224   diff @@
==========================================
  Files            69         69
  Lines          4743       4743
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           4424       4424
  Misses          319        319
  Partials          0          0

Powered by Codecov. Last update 2fad2b2...3293606


Why break upon bo._update_model() LinAlgError?

On https://github.com/SheffieldML/GPyOpt/blob/master/GPyOpt/core/bo.py#L138, the response to a LinAlgError in bo._update_model() is to break and end the optimization. This seems a little heavy-handed - exiting an optimization early for a hyperparameter optimization error doesn't sit right. What is the rationale behind this choice? Would retrying a couple times be a sensible alternative? Thanks for any/all input.

Don't know about the original thinking behind this line. But I traced the call stack back to Paramz package, and there it is only raised after a number of restarts (10 by default, and I don't believe this is changed anywhere). So it appears as though if you got this error GPyOpt level, a simple optimization restart won't help.
That's just a theory through. Do you have a code that runs into this exception? Would be nice to see if adding some simple retry logic would help.

Preliminary results confirm your hunch - I added a little retry loop
done=False
while not done:
  try:
    bo._update_model()
    done=True
  except LinAlgError as e:
    nfail+=1
    if nfail>5:
      raise e

and it did nothing to stop the error. It was admittedly a fast hack - the real solution seems to require some digging. My new approach is to prune the X matrix upon getting an error - the traceback points to set_XY in the GPy.gp.GP object.
It's a sporadic error - bo.run_optimization() is sufficient to generate it on a discrete/categorical response surface, but you have to get unlucky to reproduce.

To reproduce, in any discrete space, simply let the optimization run long enough and you'll end up with a bo.X having sufficiently many duplicate rows (bo.X.shape[0]=110 and np.unique(bo.X,axis=0).shape[0]=30) to cause even jittered Choelsky decompositions to fail in GPy (https://github.com/SheffieldML/GPy/blob/devel/GPy/util/linalg.py#L75)

I've round a work-around, but I'm not sure if it's general enough to be a useful PR:
while True:  # outer optimization loop
  try:
    bo._update_model()
  except LinAlgError as e:
    bo.X, bo.Y = remove_dense_points_with_little_variation(bo.X, bo.Y)
    bo.X = explore_more_points_far_from_already_evaluated(bo.X)
    continue

First of all, let me see if i understand this right. Are we essentially heading to "optimizaiton is stuck at a local extremum, let's jump elsewhere at random and start anew"? Or is it more subtle?

Nope you hit the nail on the head.

That's not necessarily a bad idea, at least as a first try. The API should probably say how many times we are allowed to jump. But it should be extensively tested, as I'd rather leave it as is then introduce some new parameters that just confuse the whole thing. I also not sure if the implementation is that simple, e.g. what should be done with acquisition function then?
@javiergonzalezh any thoughts?

Having implemented this solution privately and having used it in a few tens of thousands of optimization runs, I'm pretty happy with it - and the implementation is just that simple. Whether it's right is a totally separate question, of course.
Adding an API parameter with a default num_times_to_jump_when_stuck value isn't a huge lift.
I'm not sure I understand what needs to be done with the acquisition function in this case - there's no surrogate model fitting nor acquisition sub-optimization required if explore_more_points_far_from_already_evaluated is only contingent on the X data and the design space. Maybe I'm missing a subtlety with the parameter update triggers or something like that?


Development build served in production

Is this a bug report?
I think so
Did you try recovering your dependencies?
I did
Which terms did you search for in User Guide?
deployment, build, environment
Environment
System:
OS: macOS 10.14.3
CPU: x64 Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
Binaries:
Node: 11.7.0 - /usr/local/bin/node
Yarn: 1.13.0 - /usr/local/bin/yarn
npm: 6.5.0 - /usr/local/bin/npm
Browsers:
Chrome: 72.0.3626.96
Firefox: 63.0.3
Safari: 12.0.3
npmPackages:
react: ^16.8.1 => 16.8.1
react-dom: ^16.8.1 => 16.8.1
react-scripts: 2.1.5 => 2.1.5
npmGlobalPackages:
create-react-app: 1.4.0
Steps to Reproduce

create-react-app anything
git add .
git commit -m "Initial commit"
heroku create
git push heroku master

Expected Behavior
I expected Heroku to run yarn build which if I correctly understand should create a production build to be then served in this production environment.
Actual Behavior
Serving development build as you can see here using dev tools : https://frozen-falls-77976.herokuapp.com/
Reproducible Demo
See Steps to Reproduce and the result : https://frozen-falls-77976.herokuapp.com/

Have you tried the instructions outlined here?
https://facebook.github.io/create-react-app/docs/deployment#heroku-https-wwwherokucom

Thank @ianmcnally for your help, I had to configure the server using Exrpress (based on this https://medium.com/@ianposton2/create-react-app-deploy-to-heroku-7c3c03f34382)


[BUG]: Cannot install on VSCode 1.75.1

Describe the bug
Unable to install the extension
To Reproduce
Steps to reproduce the behavior:

Go to VSCode Extensions marketplace
Click on 'install'
See error

Expected behavior
The extension should install
Screenshots

Versions (please complete the following information):

OS: macOS Big Sur 11.7.4
VSCode Version: 1.75.1
Terraform Live Graph Extension for VSCode Version 0.0.4
Terraform Version: N/A

Additional context
Add any other context about the problem here.

Hi thanks for the issue, I'll look into this, currently the extension has been tested on v1.76.X, I think that the extension should work on older versions but this requires a bit of testing in order to validate the assumption.
Once validated, I'll release a version that is compatible with older versions.

I've looked into this and I can conclude that ^v1.75.0 seems compatible as well.

This will ship today in an updated version of the extension v0.0.5.

I've published v0.0.5. Closing issue.


Sorting on results with relations.

Because the sorting is based of the order the columns are entered into the $columns parameter in the constructor, there is no way to enable sorting by a field from a relation.
Is there any way to get this sorting implemented?

Just try reading the manuals on the datatables.net or make your query include an ORDER BY clause.
What of the data table processing is the sorting that you are talking about--after the rendering of the table or before.


XML EPG generation

Using the XMLTV setting in PLEX and pointing it to http://tvheadend.lan:9981/xmltv/channels seems to work fine (use the correct tvheadend hostname ofcourse).

Using the XMLTV setting in PLEX and pointing it to http://tvheadend.lan:9981/xmltv/channels seems to work fine (use the correct tvheadend hostname ofcourse).

+1

Using the XMLTV setting in PLEX and pointing it to http://tvheadend.lan:9981/xmltv/channels seems to work fine (use the correct tvheadend hostname ofcourse).

If I do this only one channel is recognized. Do you know why?

Using the XMLTV setting in PLEX and pointing it to http://tvheadend.lan:9981/xmltv/channels seems to work fine (use the correct tvheadend hostname ofcourse).

If I do this only one channel is recognized. Do you know why?

I guess that there is a problem with Tvheadend configuration.
Check that:

You have other channels configured in Tvheadend
They have guide data in Tvheadend
You allow anonymous requests to Tvheadend (no authentication)

If you see other channels when you load the XML directly by loading http://tvheadend.lan:9981/xmltv/channels in your browser, then Tvheadend is properly configured and the problem is somewhere else.

Thanks for replying quickly. I figured it out. I didn't know that the channels in tvheadend had to be mapped to specific numbers.

Thanks for replying quickly. I figured it out. I didn't know that the channels in tvheadend had to be mapped to specific numbers.

thanks, yet  another tiny detail to figure out. Have to turn on [x] Use the provider's service IDs


feat: SQL Catalog - namespaces

Carrying on from PR #524 , this is the implementation of the namespace functionality

Hi, I need more time to review the SQL individually. Here are some additional comments that I believe should take priority.
By the way, have you considered using diesel instead? I find it easier to maintain compared to raw SQL.

Personal preference but I tend to avoid ORMs - I can see that Java has gone the raw SQL way, and Python uses sqlalchemy's ORM. Happy to put this up for discussion.

I'm also ok with this being SQL rather than Diesel. Diesel feels like a large dependency to bring in for a small number of quite straightforward queries.


Improve markdown transformers

I need to import a markdown document with tables containing markdown in each cell.
Problem: $convertFromMarkdownString is currently not called inside of table cells and doesn't take a target node as a parameter, it uses root node only.
The TABLE transformer needs to be adapted, as well as createMarkdownImport (which is used by $convertFromMarkdownString) and createMarkdownExport.
This pull request adds:

Markdown import inside table cells
Markdown export inside table cells
Table row header import
Emoji import

You can test with this markdown example:
| Table | Col 1 | Col 2 |
|-------|-------|-------|
| Line 1 | *Content* | Multi\nlines |
| Line 2 | Emoji :smile: | `Code` |

Thanks @acywatson for the code review! I adapted my code.
Also, I took the liberty to remove root.selectEnd(); from createMarkdownImport because I think it's not its job and it was causing the equivalent of an autoFocus when importing a markdown.


Reakit + styled-system = weird behavior

Bug report
Hello, I'm trying ti use styled-system with the last reakit version but I can't make everything work.
Maybe I'm doing something wrond. In that case, please help me understand my mistake .
What is the current behavior?
The generated css is weird and unwanted style prop is attached to dom element.
The font size don't use the theme scale
If the current behavior is a bug, please provide the steps to reproduce.
Theme:
import {css} from "reakit"
import {fontSize, display} from "styled-system"

export default {
  fontSizes: [12, 20],
  Box: css`
    ${fontSize};
    ${display};
  `,
}

App:
import {Box} from "reakit"
export default () => (
  <Box fontSize={1} display={["none", "block"]}>
    {"reakit"}
  </Box>
)

What is the expected behavior?
The generated css is:

reakit

It should be:

reakit

.random {
   font-size: 20px;
  display: none;
}

@media screen and (min-width: 1024px) {
  .random {
    display: block;
  }
}

Other relevant information:
reakit:  0.16.0-beta.0
styled-component: 4.1.2

Hi @xuopled. Thanks for reporting it.
I've never used styled-system. If you can't change the props names to something other than css props, it'll not work with Reakit, since it transforms css props into inline styles.


multilingual feature in bot composer not working for hero and adaptive cards etc...

I have a sample echo bot in bot composer and applied translation middleware logic as mentioned in the below url documentation.
https://github.com/microsoft/BotFramework-Composer/issues/3514
https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/17.multilingual-bot
The multi lingual feature is working fine for normal text messages but if i add hero or adaptive card in the bot it is
giving error and translation is not working. what things need to be changed so that multilingual feature will work for
messages of type hero and adaptive card.
For hero card message it is giving bad request error as shown in below screenshot.

Thank you for the report, @madbeher
I'm afraid the translation middleware is only designed to translate the text property and nothing else. Translating cards is complicated because the translator needs to know which properties to translate and which properties not to translate.
I've built an Adaptive Cards translator that hasn't been released yet, but you can find a sample here: https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/tree/feature/cards/samples/Cards Library Sample
If you're interested in that code, you can voice your support on this issue: https://github.com/BotBuilderCommunity/botbuilder-community-dotnet/issues/137
I hope that helps.


Feature: Allow "fallback" option for consume-context helper

This PR would update the usage of the consume-context helper to take a named "fallback" argument for the case where a parent ProviderContext is not found.
Example use:
{{consume-context "shared-key" fallback="my-fallback-context-value"}}

The helper will first try to find the provider value for the "shared-key" context, and if not found it will return the fallback value.

@alexlafroscia updated 👍 thanks for the comments!

Sorry for the delay; holidays, etc etc. Thanks for adding that behavior to the decorator! Can you add a test case for that as well?

Hey yes, I can add this @alexlafroscia - sorry, had a delay for the same reasons and I was off all last week.

No problem at all! I totally understand. Whenever you get to it, the change will be welcome!

@alexlafroscia updated!

I went and merged this to avoid holding it up. If you want to make that change with using the default argument rather than the ternary like I mentioned, feel free to open another PR!

Ah you're right. Thanks for merging! Yeah I can clean this up in a follow up PR so it doesn't look like I contributed JS written in 2001 😅


Migration guide

Fully document how to automatically, and manually, migrate a Xamarin.Forms application to .NET MAUI.
Consider edge cases.

Superseded by #345


SAX parser to stop URL at closing  fixes #153

Fixes the problems reported in #153

@crawler-commons/committers shall we release after this one?

+1, @jnioche and yes, I am +1 to release. I was planning on re-visiting Sitemap parsing over on Nutch master branch, so I'll make the upgrade to https://github.com/apache/nutch/pull/189 when we release.

Thanks @jnioche

Thanks for merging @kkrugler


Make TestKit always search-upwards like all Gradle builds do

Current Behavior
TestKit disables searching upwards for settings.gradle files, diverging from the default behavior of Gradle.
Expected Behavior
~I understand that we have good reasons for this default that diverges from normal Gradle behavior. As a user, I want an API that allows me to enable this while knowing what the implications are.~
Prevent TestKit from disabling search-upwards (following discussion in comments). This will be a breaking change, so will have to go in a major release.
Context
Some Gradle samples tests have unnecessarily specify where the settings.gradle file is --settings-file=../settings.gradle because Gradle is not searching as it would normally.
This means that the command to display in our documentation does not match the one that a user would actually run (though they could).

Yes I think we should

Okay @oehme I have changed the description and marked this for Gradle 5.0.


Can't launch any version of minecraft

Describe the bug
Trying to launch any version of minecraft
Steps to reproduce the bug
trying to launch any version of minecraft
Expected behavior
No response
Environment
No response
Attachment

Check the relevant settings of java
I think there may be a problem with the selected java file
查看一下java的有关设置
我认为可能是这个选中的这个java文件存在问题

Check the relevant settings of java I think there may be a problem with the selected java file
查看一下java的有关设置 我认为可能是这个选中的这个java文件存在问题

How?


Update rediscloud_subscription_database.md

Documentation adjustments on rediscloud_subscription_database

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


23.10.3

Pull Request Test Coverage Report for Build 1951

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

Totals

Change from base Build 1949:
0.0%

Covered Lines:
1029

Relevant Lines:
1076

💛  - Coveralls


Questions about synthetic data

Considering columns with high correlation in the original data, if regression or classification of problem_type is performed,
is it meaningful to synthesize columns one by one?

Hi @limhasic
No, no matter you indicate the problem_type or not, the synthesis is generated row by row. And for each row, it generates together.


clayConfig.build() appends new page to the existing one

I discovered an issue.
When I execute clayConfig.build() the new generated page gets appended to the already existing page.
So I basically have double content.

As a current workaround I am manually appending the options to the select:
var roomSelect = clayConfig.getItemByAppKey("room");
var rooms = MSComp.getRooms(struct);
rooms.forEach(function(room, idx, arr) {
        var option = HTML('<option value="' + room.value + '" class="item-select-option">' + room.name + '</option>');
        roomSelect.$manipulatorTarget.add(option);
});


qutebrowser: 1.10.0 -> 1.10.2

Motivation for this change
fixes CVE-2020-11054
"backport" of https://github.com/NixOS/nixpkgs/pull/87671
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

cc @bjornfor

Does this mean moving from 1.10 to 1.11 on the stable branch is too much? (If it's acceptible, it seems like the simpler way: just cherry-pick straight from master.)

I'd say to simply cherry-pick the update to 1.11. From the changelog there are only a few minor incompatibilities but much more fixes.


[2pt]  Display joined missions in My profile - Filters

Render a list of all joined missions (use filter()) on the "My profile" page.

The task has been completed in this Pull Request No. 57


chore: remove IE11 from saucelab tests

Question: any reason for removing IE11?

Because it times out constantly and doesn't provide any real validation. Plan is to add it back once we've switched over to AOT unit tests which should be much faster.


SNC suppport

Is there any change that this library will receive SNC login support?

What would be needed?

This would be amazing. I think what would be needed is the ability to provide the SNC name and what level of security would be needed. (https://help.sap.com/saphelp_nw70ehp3/helpdata/en/48/a88d7f5134307de10000000a42189b/frameset.htm) I tried to pass the SNC Lib and SNC QOP but that didn't work. Digging around I found that those parameters do not exist. I think the end goal would be to allow single sign on via third party software like TrustBroker.

What do you mean by "... those parameters do not exist"?
Can you give me some example code so I can see what you tried?

The link I provided shows that there are general connection parameters, and then client parameters. Looking at the docs for this .ini, it looks like the only parameters that are being use are the client parameters. So according to the SAP docs, there are some options for SNC, but I am unsure how to implement since they are not part of the client parameters passed in via the $options.
$this->handle = new SapConnection($this->config);
The config contains the Production array:
   [ 'connections' => [         'Production' => [             'ashost' => env('SAP_ASHOST_PROD'),             'sysnr' => env('SAP_SYSNR_PROD'),             'client' => env('SAP_CLIENT_PROD'),             'lang' => env('SAP_LANG_PROD'),             'snc_lib' => env('SAP_SNC_LIB_PROD'),             'snc_qop' => env('SAP_SNC_QOP_PROD'),         ],   ]]

The config you pass to the Connection constructor should look like this (no connection or Production keys):
$config = [
     'ashost' => env('SAP_ASHOST_PROD'),
     'sysnr' => env('SAP_SYSNR_PROD'),
     'client' => env('SAP_CLIENT_PROD'),
     'lang' => env('SAP_LANG_PROD'),
     'snc_lib' => env('SAP_SNC_LIB_PROD'),
     'snc_qop' => env('SAP_SNC_QOP_PROD'),
];

In general, you can use all of the settings in the link you provided either in the sapnwrfc.ini file or by directly passing them to the constructor.

Sorry for the confusion, I have several different connections set up, the $config only has the 'Production' array, what the constructor receives is exactly as you describe. I do not have a problem connecting with a username and password, but it is not working using snc.

I assume an exception is thrown when you try to connect with SNC? If yes, wrap the code in a try-catch and check the exception details (var_dump()) should show some details. You can also try to increase the trace level and check the generated trace files for hints about what exactly fails.
I have never tried to connect with SNC, but I'm happy to help you debug the issue. If you post the trace file, make sure to remove all credentials ;-)

From the header file (sapnwrfc.h):

When logging on with SNC, user&passwd are to be replaced by

snc_qop, snc_myname, snc_partnername and optionally snc_lib.

(If snc_lib is not specified, the RFC library uses the "global" GSS library
defined via environment variable SNC_LIB.)

In your connection options, you only have snc_qop and snc_lib, maybe that's the cause?

Additionally, as per https://testhelpportal.com/viewer/e73bba71770e4c0ca5fb2a3c17e8e229/1610 003/en-US/d9e8a740bbaa4d8f8bee6f7b173bd99f.html the parameters SNC_PARTNERNAME, SNC_LIB and SNC_MODE seem to be required.

Thank you so much for the info. This looks really promising! I will try on Monday to get this working and get back to you. Have a good weekend.

Just wanted to give an update to my progress. I have configured my connection to use the parameters as you described and I am getting a response back, but unable to log in. I need to install the trust broker software in order to get the SNC_LIB path, so I will be working with my internal IT department to get that figured out. Once I get that done I will report back with an update and if all is working, I will provide all the details on how to get it working. Thanks again for your direction and help!

Have you managed to get it working?

Hi, sorry for the long wait. I have yet to get it working but I have made some progress that might help others. I have installed our CyberSafe software but I am having issues getting Kerberos working with IIS. Very frustrating to say the least! From what I am told, once this is resolved I should be able to SSO into SAP. I will keep this thread updated regardless of the outcome.

Any news on this?

I have been in contact with the vendor multiple times but have had no luck. You can close this and if I can get it working I will come back and provide an update.


Add parent name to subcommand name when help is called

Normally the subcommand's name is updated when startApp is called, but
we have to make a special exception for the help file, since it's a
different sub-command that's getting started.

This patch fixes the same bug as targeted here: https://github.com/codegangsta/cli/pull/171

Thank you for taking a look at this!
However, I'm not crazy about changing the command's name to be a concatenation of the app name and the command's names. If we desire this, I think a better approach may be to have a bidirectional tree where the command also knows its parent command and walk that tree upwards to print the leading commands. What do you think?

@jszwedko Neither am I.  Per commit message:

Normally the subcommand's name is updated when startApp is called, but
we have to make a special exception for the help file, since it's a
different sub-command that's getting started.

If you take a look at startApp, on line 146 of command.go, you can see where that happens.
If you want to change it in the pull request, we should probably update it there too. Would you like me to look into updating both (and any other possible) locations where the name is getting sent and see about converting it to a tree-based name generation?

Ah, and so it is!
I thought about the concept of a command knowing its parent and decided that that feels a bit confusing because only the 'active' command would have that information populated. I considered attaching this information to the Context, but given that most of the information used in the template is on the App or Command (and this is what is passed into the template execution) I'm not sure this would work either. Thus what you have may be a reasonable compromise, but I'd like to think about storing this information on the context a bit more.

I thought that may have been the reason. :) Let me know if you'd like me to make any changes, unless you feel like going ahead and making them yourself.

I think this has been superseded by #246 , let me know if that doesn't work for you though!

Thanks @jszwedko and @cpuguy83!


Remove functions.py

There's no point having a seperate file just to import one function

This makes sense. We may re-make the file later if we end up adding more functions like this in the future, but for now, I do agree that it's a bit unnecessary.

If you do end up remaking it, it would be better to use a bot extension (part of discord.py) as you could just reload the extension for changes instead of having to restart the whole bot.


WM: Fix/add Window Maker detection

Description
Currently it looks like this:

Notes
Added -len 100 because otherwise that call to xprop is very slow.
(the property _WINDOWMAKER_ICON_TILE is very long)

LGTM :+1:
Is it worth adding -len 100 to any of the other xprop commands?

Hm, good question. Maybe for the one above, where we are just interested in following line?
_NET_SUPPORTING_WM_CHECK: window id # 0x2000006

But there is no noticeable speed increase on my system.
For other calls to xprop:
As long as the needed info wouldn't be cut off, limiting the property length would be ok I think. But if it's worth the risk of breaking something in favor of not really noticeable speed improvement?
As mentioned for Window Maker, _WINDOWMAKER_ICON_TILE is very long..

Fair enough, better to leave the others as is. 👍


Box Plots - Part 2

This pr is built on top of 185, Contains advance changes for box plots

Limits , request lines for all 4 graphs
Axis values
Cost perf tabs graphs

quay.io/bmenghan/pr186

@bhanvimenghani Please fix the conflicts

@dinogun fixed conflicts


Detect empty hooks (before, after, …)

This morning I found an empty before hook in our codebase:
# frozen_string_literal: true

RSpec.describe Foo do
  before do
  end

  describe '#foo' do
    it { works }
  end
end

I would be nice if there were a cop that detected hooks with empty blocks.

This might be even more generic, an empty example group or an empty let/let!.
Can't tell off the top of my head if an empty example with a block means that it's pending, or just one without a block.

There are the following loosely related cops:

RSpec/EmptyExampleGroup: Checks if an example group does not include any tests.
RSpec/AroundBlock: Checks that around blocks actually run the test.

empty let/let!.

IIRC, this is valid / another way to write let(:foo) { nil }. That could be a different cop (enforce explicit nil in lets?).
Either way, empty setup methods are probably worth checking.


Not able to add github users to list of authorized users and organizations

Rancher server: master Feb 27
steps to reproduce:

enable github authentication
choose Restrict access to only Authorized Users and Organizations
add any github user

results:
Principal not found: undefined

can't see any server logs as well

was not able to reproduce exactly. only way i could get this error message was if the entered username was not in github. @galal-hussein is going to retest and close if he cannot repro. if he can, we'll do a screen share to nail it down

@cjellick I am not able to reproduce with the latest master, i can add users normally and login normally, thanks!


Automated cherry pick of #3317: Bugfix: add parameter deepsync to command 'cloud-provider-sync' and 'cloud-account-sync'; fix the bug when syncing eip.

Cherry pick of #3317 on release/2.11.
#3317: Bugfix: add parameter deepsync to command 'cloud-provider-sync' and 'cloud-account-sync'; fix the bug when syncing eip.

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.11@88e65c5). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.11   #3319   +/-   ##
==============================================
  Coverage                ?   7.14%
==============================================
  Files                   ?     476
  Lines                   ?   77222
  Branches                ?       0
==============================================
  Hits                    ?    5516
  Misses                  ?   71243
  Partials                ?     463

Flag
Coverage Δ

#aFlag
7.14% <0%> (?)

Impacted Files
Coverage Δ

pkg/compute/models/cloudproviders.go
1.02% <0%> (ø)

pkg/compute/models/elasticips.go
1.34% <0%> (ø)

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 88e65c5...5e521f4. Read the comment docs.

/lgtm

/approve


Discord Invitation

I'm having an accompanying discord server along with my plex, it's mainly used for request monitoring, reporting issues, overseerr support, etc.
is there a possibility that wizarr could have a discord integration so it would generate a discord invite along with the plex one?
Maybe even disallow invitees from proceeding without having joined the discord server first.

while on the topic of that, I'd be interesting if the discord account also could be linked to overseerr automatically with the Discord ID.

100% THISˆˆ

Yessss pls

I am starting to work on this, what features exactly relating to discord would you like to see?

That is awesome!!’n
Something along the lines of
With a command type the discord name with a role and automatically generates an invitation to the username via a discord message.
Once the person followed thru with the invitation have the username imported to overseer and linked his discord ID with it.
Sorry for my lack of technical descriptions
Sent from my iPhone
On Jan 28, 2023, at 8:11 AM, Matthieu B @.***> wrote:

I am starting to work on this, what features exactly relating to discord would you like to see?
—
Reply to this email directly, view it on GitHubhttps://github.com/Wizarrrr/wizarr/issues/16#issuecomment-1407430158, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3CKWTVD3LHV6H2QXVEBXS3WUVAK5ANCNFSM6AAAAAAQPEXLGI.
You are receiving this because you commented.Message ID: @.***>

For the above, the overseerr API has features to create and update users: https://api-docs.overseerr.dev/#/users/post_user

Nice! So it is possible.
Overseer is secondary, I guess the main thing of wizarr implement discord is to connect what’s already there to discord. Like automatically generated an invite to a user typing a command once given a role that you approve
Sent from my iPhone
On Jan 28, 2023, at 12:26 PM, mizz141 @.***> wrote:

For the above, the overseerr API has features to create and update users: https://api-docs.overseerr.dev/#/users/post_user
—
Reply to this email directly, view it on GitHubhttps://github.com/Wizarrrr/wizarr/issues/16#issuecomment-1407479255, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A3CKWTXSWKIECDPJNKGKXH3WUV6HVANCNFSM6AAAAAAQPEXLGI.
You are receiving this because you commented.Message ID: @.***>