KFP Client Access Denied Error

Describe the issue
I get an "Unsupported Media Type" http error when sending a request to run a simple pipeline in Kubeflow.
I created a "hello world" Python script, then created a pipeline in KF pipeline editor containing a single python script node for the script. Runtime image is set to Anaconda with Python 3.x, cpu=1 and ram=1. No other properties are modified.
Received the error log below.
Log output
Log Output

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/kfp/processor_kfp.py", line 347, in process
    kfp_pipeline = client.upload_pipeline(
  File "/usr/local/lib/python3.8/dist-packages/kfp/_client.py", line 1306, in upload_pipeline
    response = self._upload_api.upload_pipeline(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api/pipeline_upload_service_api.py", line 69, in upload_pipeline
    return self.upload_pipeline_with_http_info(uploadfile, **kwargs)  # noqa: E501
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api/pipeline_upload_service_api.py", line 163, in upload_pipeline_with_http_info
    return self.api_client.call_api(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 364, in call_api
    return self.__call_api(resource_path, method,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 188, in __call_api
    raise e
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 181, in __call_api
    response_data = self.request(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 407, in request
    return self.rest_client.POST(url,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/rest.py", line 265, in POST
    return self.request("POST", url,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/rest.py", line 224, in request
    raise ApiException(http_resp=r)
kfp_server_api.exceptions.ApiException: (415)
Reason: Unsupported Media Type
HTTP response headers: HTTPHeaderDict({'Date': 'Fri, 27 Jan 2023 19:54:40 GMT', 'Content-Type': 'application/json', 'Content-Length': '55', 'Connection': 'keep-alive', 'Referrer-Policy': 'no-referrer', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15724800; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block'})
HTTP response body: {"error":"RESTEASY003065: Cannot consume content type"}
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1713, in _execute
result = await result
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/handlers.py", line 160, in post
response = await PipelineProcessorManager.instance().process(pipeline)
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/processor.py", line 166, in process
res = await asyncio.get_event_loop().run_in_executor(None, processor.process, pipeline)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/kfp/processor_kfp.py", line 383, in process
raise RuntimeError(
RuntimeError: Failed to upload Kubeflow pipeline 'untitled' - Check Kubeflow Pipelines runtime configuration: 'kubeflow'

Deployment information

Elyra version: 3.14.2
Running Elyra as a notebook server in Kubeflow
kfp version: 1.8.18

Pipeline runtime environment

Kubeflow Pipelines
k8s v1.22.6
Kubeflow v1.6.1
multi-user auth enabled

Runtime configuration settings

api endpoint: https://<my_kf_domain>/pipeline
user namespace: <my_namespace>
engine: Argo
auth type: service account token
cos endpoint: https://<my_minio_domain>
bucket name: <my_bucket>
cos auth type: user credentials
cos credentials secret: empty
cos username: <my_username>
cos password: <my_password>

I think the runtime settings are correct, because if I modify them I get errors such as access denied for kubeflow or minio before getting the http error.

I changed the api endpoint in the untime configuration settings in trial and error:
new api endpoint: http://ml-pipeline-ui.kubeflow:80/pipeline
And got a new error:
Log Output

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/kfp/processor_kfp.py", line 247, in process
    client.list_experiments(namespace=user_namespace, page_size=1)
  File "/usr/local/lib/python3.8/dist-packages/kfp/_client.py", line 532, in list_experiments
    response = self._experiment_api.list_experiment(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api/experiment_service_api.py", line 567, in list_experiment
    return self.list_experiment_with_http_info(**kwargs)  # noqa: E501
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api/experiment_service_api.py", line 668, in list_experiment_with_http_info
    return self.api_client.call_api(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 364, in call_api
    return self.__call_api(resource_path, method,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 188, in __call_api
    raise e
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 181, in __call_api
    response_data = self.request(
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/api_client.py", line 389, in request
    return self.rest_client.GET(url,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/rest.py", line 230, in GET
    return self.request("GET", url,
  File "/usr/local/lib/python3.8/dist-packages/kfp_server_api/rest.py", line 224, in request
    raise ApiException(http_resp=r)
kfp_server_api.exceptions.ApiException: (403)
Reason: Forbidden
HTTP response headers: HTTPHeaderDict({'content-length': '19', 'content-type': 'text/plain', 'date': 'Fri, 27 Jan 2023 21:38:56 GMT', 'server': 'envoy', 'x-envoy-upstream-service-time': '1'})
HTTP response body: RBAC: access denied
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/tornado/web.py", line 1713, in _execute
result = await result
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/handlers.py", line 160, in post
response = await PipelineProcessorManager.instance().process(pipeline)
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/processor.py", line 166, in process
res = await asyncio.get_event_loop().run_in_executor(None, processor.process, pipeline)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.8/dist-packages/elyra/pipeline/kfp/processor_kfp.py", line 254, in process
raise RuntimeError(
RuntimeError: Failed to kfp.Client().list_experiments() against: 'http://ml-pipeline-ui.kubeflow:80/pipeline' - Check Kubeflow Pipelines runtime configuration: 'kubeflow' - [TIP: ensure namespace 'yozen' is correct]

The namespace in the runtime configuration (yozen) is correct and my current user namespace.
To understand what's going on I created a notebook, tried running the following code and received the results in comments:
import kfp
client = kfp.Client(host="http://ml-pipeline-ui.kubeflow:80/pipeline")
client.get_user_namespace()   # output: yozen
client.list_experiments()   # error: access denied
client.list_experiments(namespace="yozen")   # error: access denied

I'm not sure if this is the expected behavior or I'm making a mistake.

Did you check https://www.kubeflow.org/docs/components/pipelines/v1/sdk/connect-api/#rbac-authorization?
As a side note, KF 1.6.1 uses KFP v2, which Elyra does not support. Last time we checked (back in 2022) the v2 SDK didn't support all v1 features Elyra is using.

I was confused about KFP versioning before, but I think the following points are correct:

Installating KF 1.6.1 using manifests installs KFP 2.0.0-alpha.5
KFP version is not the same with KFP SDK version
KF 1.6.1 docs still include Pipelines SDK v1 with "stable" marking, but Pipelines SDK v2 with "beta" marking: https://v1-6-branch.kubeflow.org/docs/components/pipelines/
Updated Roadmap for KF 1.7 includes "Delivery of KFP V2 beta": https://github.com/kubeflow/kubeflow/blob/29e74b13975e5f0729fd731b2df3fcd2beee5690/ROADMAP.md
kfp Python package versions for SDK v2 are 2.x.x. But 1.8.x are still being released: https://pypi.org/project/kfp/#history

These came from poking around kubeflow repos. A KFP maintainer could simply answer whether SDK v1 still fully works in KF 1.6.1.
I am using kfp (Python package) v1.8.18 in a notebook.
I had checked the link you provided. I have the PodDefault (created manually) and the token is mounted.
I have a RoleBinding that assigns kubeflow-edit ClusterRole to default-editor ServiceAccount in my user namespace (created automatically with Profile)
The sample code using kfp.Client() works in a notebook. list_experiments method returns a result. It returns "access denied" when elyra calls it in the same notebook server.

I got it working!
I was using kfp.Client() in the notebook so it was automatically setting a hostname. I checked what it is with client._existing_config.host. Changed the api endpoint in runtime config from
http://ml-pipeline-ui.kubeflow:80/pipeline
to
http://ml-pipeline.kubeflow.svc.cluster.local:8888
and the pipeline run is sent and completed.
I don't know why the change from Pod endpoint to Service URL was necessary since the former is suggested in Elyra docs.

Excellent! Clever approach to figuring this out. Since there are many ways to configure KFP/Kubernetes, our generic answers in the documentation might not always hit the mark.
Quick follow-up:

I was confused about KFP versioning before, but I think the following points are correct:
Installing KF 1.6.1 using manifests installs KFP 2.0.0-alpha.5
KFP version is not the same with KFP SDK version

Yes, this is important to note. My apologies, I guess my answer about v2 support wasn't specific enough. Elyra requires KFP SDK package version < 2.0. So irrespective of which version of Kubeflow/Pipelines you have deployed (v1.x or 2.x) on Kubernetes, Elyra will always use the v1 SDK API to communicate with the server. As long as the Kubeflow server supports this API, you will be able to run pipelines. When we ran a few tests to determine whether Elyra would work with  v2 of the KFP SDK we encountered issues., which caused us to put the upper cap on the package version. As a result, Elyra cannot take advantage of any KFP v2 features.

Thanks! I'm closing the issue then.


Azure MySQL: "this user requires mysql native password authentication."

Rancher versions:
rancher/server: 1.6.2
rancher/agent: -
Infrastructure Stack versions:
Docker version: (docker version,docker info preferred)
17.03.0-ce
Operating system and kernel: (cat /etc/os-release, uname -r preferred)
Ubuntu 14.04.5 LTS
Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)
Azure VM
Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)
external DB: Azure MySQL
CATTLE_DB_CATTLE_DATABASE=mysql
CATTLE_DB_CATTLE_MYSQL_HOST=exg-rancher.mysql.database.azure.com
CATTLE_DB_CATTLE_MYSQL_NAME=rancher
CATTLE_DB_CATTLE_MYSQL_PORT=3306
CATTLE_DB_CATTLE_USERNAME=rancher@exg-rancher
Environment Template: (Cattle/Kubernetes/Swarm/Mesos)
Cattle
Steps to Reproduce:
run clean docker image for rancher server with Azure MySQL connection.
# pull the new image
DOCKERIMAGE="rancher/server:v$(get_octopusvariable 'Octopus.Release.Number')"

sudo docker pull $DOCKERIMAGE

# run the new container
sudo docker run -d --restart=unless-stopped -p 80:8080 -p 8080:8080 -p 9345:9345 $DOCKERIMAGE \
    --db-host "$(get_octopusvariable 'RancherDbHostname')" \
    --db-port "$(get_octopusvariable 'RancherDbPort')" \
    --db-user "$(get_octopusvariable 'RancherDbUsername')" \
    --db-pass "$(get_octopusvariable 'RancherDbPassword')" \
    --db-name "$(get_octopusvariable 'RancherDbName')" \
    --advertise-address $(hostname -I | sed -r 's/.*?(10\.229\.[0-9\.]+).*/\1/')

Results:
level=fatal msg="this user requires mysql native password authentication."

The official statement from Microsoft Azure Support (REG:117061315887758):

For JDBC connectivity, we support the use of MySQL Connector/J 5.1.
Please find a list of connection libraries for Azure Database for MySQL at "Connection libraries for Azure Database for MySQL | Microsoft Docs" (https://docs.microsoft.com/en-us/azure/mysql/concepts-connection-libraries).
The connection libraries listed in the document are those that we tested and we ensured are properly working. We are also making sure that further development in Azure Database for MySQL does not break them.
We are developing the service in accordance to MySQL official protocol specifications. We noticed that there are implementation issues with certain libraries that cause incompatibility. We are actively working with the community to address these issues, so we expect to expand the list of supported libraries over time.

@fkollmann Native password authentication has to be explicitly enabled for the catalog service. Please give this a try:
docker run -e CATTLE_DB_CATTLE_GO_PARAMS="allowNativePasswords=true"  (...) rancher/server:stable

Specifying the environment variable CATTLE_DB_CATTLE_GO_PARAMS="allowNativePasswords=true" did resolve the issue.
@janeczku The issue is resolved, from my POV.

Great, thanks for confirming @fkollmann


feat(Data/Set/Intervals/Disjoint): i[Inter|Union]_Ii[c|o]...

This prepares removing some lemmas from Probability/Kernel/CondCdf. Zulip discussion

bors r+

will fix the build...

fixed the name and rebased

bors r+


Updated tika file type detection to only occur if mark/reset are supported

#2062  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @tommylau523 and the rest of your teammates on  Graphite


Create extended user mention syntax when needed.

Recently, in zulip/zulip#10243 we merged support for the following mention syntax to zulip/zulip:
@**Full Name|1234(id)**
This is to allow us to mention users with the same full name, and is optional. The web app intelligently adds the new syntax only when the users have the same full name, and uses the simpler syntax for others.
Example: https://chat.zulip.org/#narrow/stream/7-test-here/topic/user.20mention
We should:

Add support for this syntax in the mobile app.
Ensure that it is behind a feature flag because it would break mentions in older servers/any non CZO server for now.

Ensure that it is behind a feature flag because it would break mentions in older servers/any non CZO server for now.

This feature is behind which feature flag?  🤔

I'm sorry, I meant a version check. I believe this is part of the 1.9
release so that should work.
On Fri, Dec 14, 2018, 4:25 PM Vishwesh Jainkuniya<EMAIL_ADDRESS>wrote:

Ensure that it is behind a feature flag because it would break mentions in
older servers/any non CZO server for now.
This feature is behind which feature flag? 🤔
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/zulip/zulip-mobile/issues/3000#issuecomment-447290364,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHqT1um6afsk2hYblUFGvnRvoiTBVvvrks5u44O1gaJpZM4W5_qE
.

It looks like this was taken care of in ebcaae257cb5931eb1eb6714f2941e4257fef3ea (#4094), so I'm closing this.
It wasn't done with a feature flag, but 1.9 is pretty old.


Java null pointer issue ,

spark version - 3.3.2
deequ jar loaded , 2.0.3-spark-3.3
PyDeequ installed using pip , version 1.2.0
I am using the below code
from pyspark.sql import SparkSession, Row import pydeequ spark = (SparkSession .builder .config("spark.jars.packages", pydeequ.deequ_maven_coord) .config("spark.jars.excludes", pydeequ.f2j_maven_coord) .getOrCreate())
I m new to deequ ,
Could you please help me with installation steps .

we don't have bandwidth troubleshooting dev setup issues. search https://github.com/awslabs/python-deequ/issues if you find anything or ask on stack overflow.


OpenAI Server incompatible with OpenAI API when streaming and requesting usage

Hi,
I'm not entirely sure, whether this is an issue in this project, or an upstream project, but I'm encountering an incompatibility between the OpenAI API definition and the responses given by the server spun up by kubeai.
According to the spec, when specifying include_usage = true in stream_optionsthe behaviour should be:
If set, an additional chunk will be streamed before the data: [DONE] message. The usage field on this chunk shows the token usage statistics for the entire request, and the choices field will always be an empty array. All other chunks will also include a usage field, but with a null value.

However, the responses that I get include the usage in each chunk with increasing token numbers for the completion.
This breaks the assumption, that usage is null on normal chunks which can otherwise be used to distiguish between "usage" and "content" chunks.
I'm happy to report this upstream if it is an issue with a tool used by kubeai, but admittedly, I'm not sure where this arises.

Thank you for filing the issue, we will investigate

Can you add some details on what your Model spec looked like? and what version of KubeAI you installed?

In addition to what Nick said about Model spec, can you also provide the code you used to send a request and reproduce this behavior? I think I can produce the code based on your description, but don't want to make assumptions and not be able to reproduce.
The most important part of your model spec would be what engine you used, did you use vLLM or Ollama?

As for the kubeai version:
I installed it according to the instructions a few days ago. Would need to check the exact version (and will fill it in tomorrow)
The engine is vllm. (Will provide the exact spec also tomorrow).

The config for the model is:
catalog:
  llama-3.1-8b-instruct-fp8-l4:
    enabled: true
    minReplicas: 0

Kubeai:
NAME         	NAMESPACE	REVISION	UPDATED                                 	STATUS  	CHART       	APP VERSION
kubeai       	kubeai   	2       	2024-10-23 14:12:37.395280329 +0300 EEST	deployed	kubeai-0.7.0	v0.9.0
kubeai-models	kubeai   	4       	2024-10-23 14:13:34.411058633 +0300 EEST	deployed	models-0.7.0	1.16.0

I think you're hitting this open bug  in vLLM: https://github.com/vllm-project/vllm/issues/7262
Can you confirm that you're seeing the same behavior?

It's a crucial feature if you want to use a usage logging gateway for opensource models and don't want to start hacking in the server code / do prompt tokenization externally (which can be quite annoying for chat completions). Determining the chat template used by a model is really annoying and would require essentially replicating the whole prompt processing in the gateway, which is a complete waste of resources, and there is no other way to just get the correct prompt tokens from the input.


[dotnet] Investigate using Windows containers for provider

For sufficiently old .NET projects, like our nerd-dinner walkthrough for example, we need a Windows host where the provider binary can be run directly. We should investigate whether we can run this provider in a Windows container.
Assuming it were possible for us to build a dotnet-external-provider windows container, this would open the door to running the analysis of .NET project in-cluster with Windows containers in Kubernetes.

/triage accepted
/kind design - since it'll require some design once we prove it's possible
/priority important-soon

cc @pranavgaikwad @rromannissen


fix npm entry: screenshots and repo link

Heya! Nice work on this!
I discovered it by way of https://www.npmjs.com/package/immutable-devtools but that has broken screenshots and no link back to this repo.
would be so sweet if it can get both! :)

Good catch! Now fixed.


[Map] DM-300k-egypt

Hash: e0f267c9b9a8cc4f99af9d1fe33a6d42d139049b
Current name: DM-300k-egypt
According to the readme for the compettion for which this map was submitted, the author is Phalanx

Updated


docs: 3944: local minio install

PR fulfills these requirements

[x] Commit message(s) and PR title follows the format [fix|feat|ci|chore|doc]: TICKET-ID: Short description of change made ex. fix: DEV-XXXX: Removed inconsistent code usage causing intermittent errors
[ ] Tests for the changes have been added/updated (for bug fixes/features)
[x] Docs have been added/updated (for bug fixes/features)
[x] Best efforts were made to ensure docs/code are concise and coherent (checked for spelling/grammatical errors, commented out code, debug logs etc.)
[x] Self-reviewed and ran all changes on a local instance (for bug fixes/features)

Change has impacts in these area(s)

[ ] Product design
[ ] Backend (Database)
[ ] Backend (API)
[ ] Frontend

Describe the reason for change
https://github.com/heartexlabs/label-studio/issues/3944
What does this fix?
What is the new behavior?
What is the current behavior?
What libraries were added/updated?
Does this change affect performance?
Does this change affect security?
What alternative approaches were there?

using compose profiles instead of multi-file deployments

What feature flags were used to cover this change?
Does this PR introduce a breaking change?

[ ] Yes, and covered entirely by feature flag(s)
[ ] Yes, and covered partially by feature flag(s)
[ ] No
[ ] Not sure (briefly explain the situation below)

What level of testing was included in the change?

[ ] e2e
[ ] integration
[ ] unit

Which logical domain(s) does this change affect?
(for bug fixes/features, be as precise as possible. ex. Authentication, Annotation History, Review Stream etc.)

Forgot that I had some other changes made to the base compose file on my branch, if you dislike the logging and network-related changes I will remove them.

There should be no changes in docker-compose file at all. Please move all to override

is it intended that no container restarts, except for Postgres, which restarts on reboot, even if the stack was stopped before?

@farioas is there something else needed to progress this PR?

Hi @Gornoka,
Nothing from your side. I have to test this change, rewrite the documentation and merge it.
Unfortunatly, I'm too busy during this month, so I'll get back to this PR whenever it's possible.
Thanks.

Thanks @Gornoka !


type information and code formatting with coc and neovim

I am happily using purescript language server with neovim CoC. It works well but I can't find out how to use some features.

I can't get type information of the symbol under the cursor. Typing K, or :call Show_documentation() doesn't do anything. On the other hand, type information does show fine on warnings, error or autocomplete in insert mode.
I can't get purty to work with the standard bindings. The :Format or CocAction('format') command simply doesn't do anything, although it works when I do %!purty format %` manually.

Here are the bindings that I use for these commands:
              " Use K to show documentation in preview window
              nnoremap <silent> K :call Show_documentation()<CR>

              function! Show_documentation()
                if (index(['vim','help'], &filetype) >= 0)
                  execute 'h '.expand('<cword>')
                elseif (coc#rpc#ready())
                  call CocActionAsync('doHover')
                else
                  execute '!' . &keywordprg . " " . expand('<cword>')
                endif
              endfunction

              " Add `:Format` command to format current buffer.
              command! -nargs=0 Format :call CocAction('format')

Any idea? Also, let me know if there is a better place to ask this question.

I can't get type information of the symbol under the cursor

To be clear, only top level symbols are supported - but that's the same for autocomplete. In general, if completion works for a given identifier, hover should work, from the POV of the language server.
I'd suggest looking at whatever logging you have of the language server interaction to determine "how far" things get.

I can't get type information of the symbol under the cursor

To be clear, only top level symbols are supported - but that's the same for autocomplete. In general, if completion works for a given identifier, hover should work, from the POV of the language server.
I'd suggest looking at whatever logging you have of the language server interaction to determine "how far" things get.

I can't get purty to work with the standard bindings. The :Format or CocAction('format') command simply doesn't do anything, although it works when I do %!purty format %` manually.

That's odd; it works just fine for me. I'll investigate later.

Any update on this issue? I don't think there's a language server issue here, as such I will close if there is no update

As for me, since then I've moved to Neovim's built-in LSP client, so I can't really check anything.
@MMesch did you check out https://github.com/leighman/coc-purty?

purty (or the 2 other formatters) should be supported via the language server with standard formatting request - and are known to work if they are available in your path - so any issues are likely to be in LSP client configuration - and if there is an issue in the language server, I would need a communication log to investigate that.
I know formatting is working with neovim builtin lsp client & this server, at the least, not sure if someone is using it with coc.nvim and can suggest config.

purty (or the 2 other formatters) should be supported via the language server with standard formatting request

Yeah, I figured that out just before you sent your message. :)

Closing for lack of follow up & reported working by another user; @MMesch if you still have an issue please feel free to re-open, prefererably with a LSP communication log showing the issue.

Hey, just checked and it works now after some updates. Sorry for not following up directly.


Squeezebox: Select source is not supported

Home Assistant release with the issue:

Latest
Last working Home Assistant release (if known):
None
Operating environment (Hass.io/Docker/Windows/etc.):

All
Component/platform:

https://www.home-assistant.io/components/media_player.squeezebox/
Description of problem:
Squeezebox component doesn't support source selection
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
media_player:
  - platform: squeezebox
    host: IP_ADDRESS

Additional information:
I want to be able to select a playlist as a source in the mediaplayer card.

I will close this as it is not a bug report. Home Assistant does not use supporting issues for each PR.


Fix a bug that the static endpoint will unexpectedly catch all

Fixes #3452
Strip the ending slash when passed to os.path.basename, so that the last part can be used for static url path correctly.

test_main_module_paths fails on both PR and master branch.
test_static_url_empty_path_default runs successfully locally

I rebased this to 1.1.x since this seems reasonable as a bug fix there. Another test is failing, can you take a look?
Since I rebased, you'll need to fetch and reset your branch to work on it:
git fetch origin
git reset --hard origin/bugfix/3452


v0.6.3-alpha unable to fetch... rpc error: code = Unimplemented desc = unknown service poolrpc.Trader

I updated to v0.6.3-alpha today and cannot use the Pool page at https://terminal.lightning.engineering/#/pool  Connecting to the Dashboard seems fine, but once I select Pool, I get a sidebar full of errors like:
UNABLE TO FETCH ORDERS rpc error: code = Unimplemented desc = unknown service poolrpc.Trader
The interface never finishes loading after that. The Loop page has a similar issue, but there is only one error card instead of multiple. The data eventually loads in Loop.
My upgrade procedure from the previous version was:
git checkout v0.6.3-alpha
make install
I run litd in a screen session:  litd --uipassword=something
And generate a connect string: litcli --lndtlscertpath ~/.lit/tls.cert sessions add --label="default"
Then I used https://terminal.lightning.engineering/ and the Connect my node button.
Actual behavior
Pool error:

Loop error:

To reproduce
I can reproduce the issue every time.
System information
I have lnd release v0.14.2-beta installed, and I used the guide here to install litd: https://docs.lightning.engineering/lightning-network-tools/lightning-terminal/get-lit#docs-internal-guid-ae172929-7fff-f9d0-7921-e6f8acc92f53
The version is latest release from git (v0.6.3-alpha), and built from source. I also tried downloading the binaries (lightning-terminal-linux-arm64-v0.6.3-alpha.tar.gz), and I have the same issue.
The system architecture is ARM64:
Linux hostname 5.11.0-1027-oracle #30~20.04.1-Ubuntu SMP Thu Jan 13 09:43:40 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
OS is Ubuntu: DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
The only looks that looks like an error is this:
2022-02-17 01:47:00.277 [WRN] GRPC: [transport] transport: http2Server.HandleStreams failed to read frame: error decrypting payload: error reading from go-back-n: cannot receive, gbn exited

Hmm, it looks like something broke with the update. I was able to reproduce the error. Going to look into it.

A few more odd lines from overnight:
2022-02-17 07:43:51.975 [ERR] AUCT: [/poolrpc.ChannelAuctioneer/SubscribeBatchAuction]: rpc error: code = Unavailable desc = error reading from server: read tcp <IP_ADDRESS>:43384-><IP_ADDRESS>:12010: read: connection reset by peer
2022-02-17 07:43:51.978 [ERR] AUCT: Server connection error received: rpc error: code = Unavailable desc = error reading from server: read tcp <IP_ADDRESS>:43384-><IP_ADDRESS>:12010: read: connection reset by peer
2022-02-17 07:43:51.978 [ERR] RPCS: Error in server stream: server sent unexpected error
2022-02-17 07:43:51.978 [ERR] AUCT: Error in stream, trying to reconnect: server sent unexpected error
2022-02-17 07:43:57.658 [INF] AUCT: Successfully connected to auction server
2022-02-17 07:43:58.987 [ERR] RPCS: Unknown server error: %v server sent unexpected error


New-logic

diff --git a/CHANGELOG.md b/CHANGELOG.md
index dea5217..4113d07 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,9 +2,9 @@

 ## Dev
 ### Options
+- Added option to make sword reward place swords on heart containers rather than final checks (by YourAverageLink)
 - Added option to randomize progression in Flooded Faron Woods (by CovenEsme)
   - Added Faron SotH check that is obtained when completing the Tadtones story quest
-- Added option to make sword reward place swords on heart containers rather than final checks (by YourAverageLink)
 ### Changes
 - Presets (by cjs07)
   - Presets allow users to save and load their favorite settings quickly from the main page of the randomizer
diff --git a/eventpatches.yaml b/eventpatches.yaml
index 82ec8b7..7131eaf 100644
--- a/eventpatches.yaml
+++ b/eventpatches.yaml
@@ -1005,6 +1005,16 @@
     cases:
       - Rerandomize Treasure
       - -1
+  - name: Skip to end of fledge 2
+    type: flowpatch
+    index: 347 # after giving fledge the second stamina potion
+    flow:
+      next: 353
+  - name: Skip Fledge 3
+    type: flowpatch
+    index: 353
+    flow:
+      next: 320 # before crystal itemget
 116-InsectGame:
   - name: Fix switch 1
     type: flowpatch
@@ -1134,6 +1144,11 @@
       type: type1
       next: Kina Quest Switch
       param4: New Kina Text Option
+  - name: Shorten Kina Text
+    type: flowpatch
+    index: 97
+    flow:
+      next: 103
 118-Town3:
   - name: Shorten Sparrot quest start text
     type: flowpatch
@@ -1184,6 +1199,11 @@
     index: 7
     flow:
       next: 21 # never talk about triforce or song of the hero
+  - name: Shorten Levias text
+    type: flowpatch
+    index: 0
+    flow:
+      next: 22
   - name: Skip bokobase story flag
     type: flowpatch
     index: 22
diff --git a/gui/ui_randogui.py b/gui/ui_randogui.py
index fa0fa7a..7afd751 100644
--- a/gui/ui_randogui.py
+++ b/gui/ui_randogui.py
[Who cares about this file ?]
diff --git a/hints/hint_distribution.py b/hints/hint_distribution.py
index bb9348e..ea38ad1 100644
--- a/hints/hint_distribution.py
+++ b/hints/hint_distribution.py
@@ -97,7 +97,6 @@ class HintDistribution:
         self.barren_dungeons = []
         self.placed_dungeon_barren = 0
         self.prev_barren_type = None
-        self.hinted_locations = []
         self.barren_hinted_areas = set()
         self.counts_by_type = defaultdict(int)

@@ -149,7 +148,7 @@ class HintDistribution:
         self.areas = areas
         self.options = options

-        self.hinted_locations.extend(unhintable)
+        self.hinted_locations = unhintable

         self.banned_stones = list(map(areas.short_to_full, self.banned_stones))
         self.max_hints_per_stone = {
@@ -186,7 +185,7 @@ class HintDistribution:
         self.always_hints = always_hints
         self.sometimes_hints = sometimes_hints

-        # creates a list of boss key locations for required dungeons
+        # creates a list of boss keys for required dungeons
         self.required_boss_keys = [
             boss_key
             for dungeon in self.logic.required_dungeons
@@ -237,6 +236,9 @@ class HintDistribution:
             else:
                 self.barren_overworld_zones.append(zone)

+        self.junk_hints = JUNK_TEXT.copy()
+        self.rng.shuffle(self.junk_hints)
+
         # for each fixed goal hint, place one for each required dungeon
         if "goal" in self.distribution.keys():
             self.distribution["goal"]["fixed"] *= len(self.logic.required_dungeons)
@@ -247,10 +249,7 @@ class HintDistribution:
         for hint_type in self.distribution.keys():
             if self.distribution[hint_type]["fixed"] > 0:
                 needed_fixed.append(hint_type)
-        needed_fixed.sort(key=lambda type: self.distribution[type]["order"])
-
-        self.junk_hints = JUNK_TEXT.copy()
-        self.rng.shuffle(self.junk_hints)
+        needed_fixed.sort(key=lambda hint_type: self.distribution[hint_type]["order"])

         self.hints = []
         for hint_type in needed_fixed:
@@ -346,20 +345,20 @@ class HintDistribution:
             return None

         item = self.hintable_items.pop()
-        location = self.logic.placement.items[item]
+        loc = self.logic.placement.items[item]

-        if location in self.hinted_locations:
+        if loc in self.hinted_locations:
             return self._create_item_hint()
-        self.hinted_locations.append(location)
+        self.hinted_locations.append(loc)

         if self.options["precise-item"]:
-            text = self.areas.checks[location].get("text")
-            return LocationGossipStoneHint("precise_item", location, item, text)
+            text = self.areas.checks[loc].get("text")
+            return LocationGossipStoneHint("precise_item", loc, item, text)

-        if (zone_override := self.areas.checks[location].get("cube_region")) is None:
-            zone_override = self.areas.checks[location]["hint_region"]
+        if (zone_override := self.areas.checks[loc].get("cube_region")) is None:
+            zone_override = self.areas.checks[loc]["hint_region"]

-        return ZoneItemGossipStoneHint(location, item, zone_override)
+        return ZoneItemGossipStoneHint(loc, item, zone_override)

     def _create_random_hint(self):
         all_locations_without_hint = [
@@ -388,6 +387,7 @@ class HintDistribution:
         if not locs:
             if not goal_mode:
                 return None
+
             # if there aren't applicable locations for any goal, return None
             if not any(self.goal_locations):
                 return None
diff --git a/hints/hint_types.py b/hints/hint_types.py
index 97fb317..1dc9796 100644
--- a/hints/hint_types.py
+++ b/hints/hint_types.py
@@ -33,9 +33,6 @@ class GossipStoneHintWrapper:
         secondary_text = self.secondary_hint.to_gossip_stone_text(norm)
         return primary_text + secondary_text

-    def to_spoiler_log_text(self, norm=None) -> str:
-        return f"{self.primary_hint.to_spoiler_log_text(norm)} / {self.secondary_hint.to_spoiler_log_text(norm)}"
-
     def to_spoiler_log_json(self):
         return [
             self.primary_hint.to_spoiler_log_json(),
diff --git a/logic/hints.py b/logic/hints.py
index 0a7adda..12217b9 100644
--- a/logic/hints.py
+++ b/logic/hints.py
@@ -106,7 +106,7 @@ class Hints:
             ]
         )
         self.dist.start(self.logic, needed_always_hints, needed_sometimes_hints)
-        hints = self.dist.get_hints(32)
+        hints = self.dist.get_hints()
         self._place_hints_for_locations(hints)

     def _place_hints_for_locations(self, hints: List[GossipStoneHint]):
diff --git a/logic/logic.py b/logic/logic.py
index 17ceb5e..4bce316 100644
--- a/logic/logic.py
+++ b/logic/logic.py
@@ -108,7 +108,7 @@ class Logic:
                     self.racemode_ban_location(location_name)
                     # print(f'banned {location_name}')

-        if (
+        if self.rando.options["empty-unrequired-dungeons"] and (
             not self.rando.options["triforce-required"]
             or self.rando.options["triforce-shuffle"] == "Anywhere"
         ):
@@ -1382,6 +1382,8 @@ class Logic:
             self.remove_owned_item(item_name)
         for item_name in big_keys_to_place:
             self.remove_owned_item(item_name)
+        for item_name in triforces_to_place:
+            self.remove_owned_item(item_name)

     def place_dungeon_item(self, item_name):
         accessible_undone_locations = self.get_accessible_remaining_locations()
diff --git a/options.yaml b/options.yaml
index 2780037..157b02c 100644
--- a/options.yaml
+++ b/options.yaml
[Look at the diff with pre-new-logic instead]

Rebase diff

diff.txt
Diff for the new commits in Hints Simplification and Chest Dowsing

Created a PR against the entrance-rando-logic branch to revert the check names. This should solve the 2nd issue blocking new logic from being merged.

Amended the PR mentioned above to also resolve the 1st issue blocking new logic from being merged.


28 preprocess raster pop

Description

Changes to 5 files:

Updated requirements.txt: added in extra required package.
Added src/transport_performance/population/__init__.py: init file for population modules
Added src/transport_performance/population/rasterpop.py: contains RasterPop class
Added src/transport_performance/population/vectorpop.py: placeholder for later work - just reserving the module name in this PR.
Added tests/population/test_rasterpop.py: unit tests for RasterPop class.

Fixes #28
Motivation and Context

Adding in capability to read and pre-processing rastered population data for use in transport network analyses.
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

How Has This Been Tested?

pytest test suite updated to test core functionalities using dummy data (via pytest fixtures). These updates do not include unit tests for the plot() method - issue #43 has been raised to capture this at a later date. The plot functions have at least been verified manually. Existing test pass as expected.
Test configuration details:

OS: macOS
Python version: 3.9.12
Java version: 11
Python management system: conda/pip

Advice for reviewer

The core of the development is within transport_performance/population/raster.py and tests/population/test_rater.py.
Checklist:

[X] My code follows the intended structure of this project
[X] I have performed a self-review of my own code
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[X] I have added tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[X] Any dependent changes have been merged and published in downstream modules

Additional comments

None.

Codecov Report
Patch coverage: 56.44% and project coverage change: -23.88% :warning:

Comparison is base (d90381a) 85.29% compared to head (fe71dff) 61.42%.

Additional details and impacted files
@@             Coverage Diff             @@
##              dev      #44       +/-   ##
===========================================
- Coverage   85.29%   61.42%   -23.88%
===========================================
  Files           1        4        +3
  Lines          34      197      +163
===========================================
+ Hits           29      121       +92
- Misses          5       76       +71

Flag
Coverage Δ

unittests
61.42% <56.44%> (-23.88%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

src/transport_performance/population/vectorpop.py
0.00% <0.00%> (ø)

src/transport_performance/population/rasterpop.py
54.36% <54.36%> (ø)

src/transport_performance/utils/test_utils.py
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


fix yaml parsing of complex CSV files

https://docs.ansible.com/ansible/devel/reference_appendices/config.html#default-jinja2-native

/test CVP

/test CVP

/test CVP

/test CVP

/test CVP

Closing as the issue this change is addressing has already been resolved in #45


Translate Minikube page to Bahasa Indonesia

This was originally created by @imrenagi in https://github.com/kubernetes/website/pull/22479 after addressing the review feedback.
Signed-off-by: Giri Kuncoro<EMAIL_ADDRESS>Co-authored-by: Imre Nagi<EMAIL_ADDRESS>/language id

@ariscahyadi thanks for re-reviewing! will address the nits in separate PRs
@irvifa need help with the approval

/approve


Auto-generation of GMS clients, GQL DataLoaders + DataFetchers, GQL schema

Is your feature request related to a problem? Please describe.
This is related to the new GraphQL API being introduced to DataHub. (https://github.com/linkedin/datahub/pull/2066)
Describe the solution you'd like
Automatically generate the following from GMS models:

Generation of the primary entities on the GQL graph
Generation of Pegasus->GQL mapper logic
Generation of DataLoaders
Generatation of DataFetchers (Resolvers)

Describe alternatives you've considered
Hand-maintain the GraphQL schema, loaders, fetchers.
Additional context
N/A

(I can be assigned this)
cc. @shirshanka

(I can be assigned this)
cc. @shirshanka

We are now managing feature requests through our new portal to improve visibility & prioritize work into our public roadmap. If this request is still relevant, please create a new issue so we can gauge current interest from the Community & prioritize work accordingly.
We'll close out this issue in the meantime. Feel free to reach out to me on DataHub Slack with any questions!


bug: can't change or reset margin in card-title and padding in card-body

What version of daisyUI are you using?
v2.51.5
Describe your issue
While using the card component there are 2 problems that I faced

margin utility class doesn't work on cart-title
padding utility class doesn't work on cart-body

To reproduce this problem
take a card component and try changing card-body's padding or card-title's margin using utility class
What browsers are you seeing the problem on?
Chrome
Reproduction URL (optional)
No response

Both of them work. Here's an example: https://play.tailwindcss.com/K0p0Y3P1me
If it's not working in your project, please provide a reproduction repo so I can see the code.


Mappings are not loaded on supported filetypes

Hi, when opening a supported file of type python, clojure, lua I can still use :Conjure and opening :ConjureSchool everything works as expected, BUT all my localleader mappings are gone. They still work in ConjureSchool though. I'm terrible confused what could have changed.
For reference this is how I load Conjure since forever now (with lazy.nvim):
  {
    "Olical/conjure",
    event = "VimEnter",
    dependencies = { { "guns/vim-sexp" }, { "tpope/vim-sexp-mappings-for-regular-people" } },
    keys = { "<localleader>cs", ":execute ClerkShow()<CR>", desc = "Show Clerk" },
    ft = { "clojure", "python", "lua" },
  },

and suddenly it works again. sorry for the bother!


is there any plans to release code?

Great work! It's already late November.

When will the training code be made public?


Get underlying ptr of shared_ptr without dereferencing.

Over at blackhole89/notekit#60, we were struggling with a crash due to a failed assertion under atom_basic.cpp:483. It turns out that trick used there to get the address from a shared_ptr does not work when _GLIBCXX_ASSERTIONS is defined and the pointer is NULL (as is the case with _previousAtom in that line at first). Indeed, if you check bits/shared_ptr_base.h, there's an assertion in the relevant operator* that the dereferenced pointer should not be NULL, regardless of the valid-ish use case of immediately taking its address again. I think the intended way of getting the underlying ptr is to use .get() instead.
I've only fixed the instance we bumped up against; if there are other places in the code with the &(*smartptr) pattern, they probably should changed in the same way too.

I get it. I'll check it for this misuse.


Deepcopy image data when pulling frames from the camera

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
{  D400 }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System
windows

Kernel Version (Linux Only)
(e.g. 4.14.13)

Platform
PC.

SDK Version
{ 2.21 }

Segment
{Robot/Smartphone/VR/AR/others }

Issue Description
<Describe your issue / question / feature request / etc..>
When you try to read data from a .bag file if you don't deepcopy the frames from frames = pipeline.wait_for_frames() then the program crashes after 30 or so frames.
This is the version that crashes, it also crashes if you use np.asanyarray(...) (see second example).
import pyrealsense2 as rs
from collections import deque
import numpy as np

file = input("Input file to read: ")

ctx = rs.context()
pipeline = rs.pipeline(ctx)
config = rs.config()
rs.config.enable_device_from_file(config, file, False)
config.enable_all_streams()
cap = pipeline.start(config)

frame_list = deque()
f_index = 0

while True:
    print("\rFrame {}".format(f_index), end='')
    frames = pipeline.wait_for_frames()
    color_frame = frames.get_color_frame().get_data()
    depth_frame = frames.get_depth_frame().get_data()

    frame_list.append((color_frame, depth_frame))
    f_index += 1

This is the version that works
import pyrealsense2 as rs
from collections import deque
from copy import deepcopy
import numpy as np

file = input("Input file to read: ")

ctx = rs.context()
pipeline = rs.pipeline(ctx)
config = rs.config()
rs.config.enable_device_from_file(config, file, False)
config.enable_all_streams()
cap = pipeline.start(config)

frame_list = deque()
f_index = 0

while True:
    print("\rFrame {}".format(f_index), end='')
    frames = pipeline.wait_for_frames()
    color_frame = deepcopy(np.asanyarray(frames.get_color_frame().get_data()))
    depth_frame = deepcopy(np.asanyarray(frames.get_depth_frame().get_data()))

    frame_list.append((color_frame, depth_frame))
    f_index += 1

Sorry if this isnt well thought out, I typed it in 5 minutes on my phone

Hi @iggy12345
That's fine, what you are describing is clear.
However, if I understand correctly, the "crash" happens because wait_for_frames refused to provide any additional frames. This behavior was discussed on this forum, and the bottom line is that it's by design. If you do want to keep SDK frames for longer, you can call frame.keep() method. By default, the SDK limits the number of frames that can be used at any given time to prevent unbound latency due to slow processing.

@iggy12345 Any other questions? Looking forward to your update. Thanks!

That did solvsolve my issue, sorry, forgot to close it


Problem in _saferef.py

My code reported this error:
File "/home/lib/python3.4/site-packages/blinker/_saferef.py", line 197, in calculate_key
return (id(get_self(target)), id(get_func(target)))
AttributeError: 'function' object has no attribute 'self' .
When i print(dir(target)) i got this:
['annotations', 'call', 'class', 'closure', 'code', 'defaults', 'delattr', 'dict', 'dir', 'doc', 'eq', 'format', 'ge', 'get', 'getattribute', 'globals', 'gt', 'hash', 'init', 'kwdefaults', 'le', 'lt', 'module', 'name', 'ne', 'new', 'qualname', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook', 'accept', 'im_func', 'im_self', 'is_signal_handler']
There is no 'self', just 'im_self'. I tried to change the code on line 50 in file _saferef.py:
from if sys.version_info < (3,):
to if sys.version_info > (3,):
and my code works. Is it a mistake in my code or is it a bug ?
Thank you for your patience.

Can you paste a test case that produces that traceback? All the tests pass on 3.4, so perhaps something is missing in the tests or in the (increasingly creaky) saferef implementation.

I ran more tests and I found out, that bug is in lib mongoengine, which assumed blinker version 0.9.
Sorry for misunderstanding.


Add activity feed API

Description ✏
Closes #xxx
What changed? Feel free to be brief.

Bullet points are helpful.
Screenshots are helpful (if applicable).

Checklist ✅

[ ] I have added screenshots (if UI changes are present).
[ ] I have done a self-review of my code.
[ ] I have manually tested my code (if applicable).

#1  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @ICEPrey and the rest of your teammates on  Graphite


After using PathUrlStrategy for removing the '#' sign, WillPopScope's onWillPop is not called when pressing the browser's back button.

initial route: http://localhost:63391/home
I change to http://localhost:63391/home/a
I click the browser back button.
Expected result:
onWillPop is called.
Actual result:
onWillPop is not called.

flutter doctor -v
C:\Users\Rony\AndroidStudioProjects\watoobi\watoobi>flutter doctor -v
[√] Flutter (Channel stable, 2.0.5, on Microsoft Windows [Version 10.0.19041.928], locale en-US)
    • Flutter version 2.0.5 at c:\flutter\flutter
    • Framework revision adc687823a (4 weeks ago), 2021-04-16 09:40:20 -0700
    • Engine revision b09f014e96
    • Dart version 2.12.3

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at C:\Users\Rony\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = C:\Users\Rony\AppData\Local\Android\sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.1.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] Connected device (3 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 10 (API 29) (emulator)
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome 90.0.4430.93
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge 90.0.818.56

• No issues found!

code:

minimal code sample
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';

void main() {
  setUrlStrategy(PathUrlStrategy());
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  @override
  void dispose() {
    super.dispose();
  }

  @override
  void initState() {
    super.initState();
  }

// This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return getMaterialApp(context);
  }

  Widget getMaterialApp(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: generateRoute,
      onGenerateInitialRoutes: (url) {
        print('onGenerateInitialRoutes called');
        return [MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: url))];
      },
      onUnknownRoute: (settings) => MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: settings.name)),
      initialRoute: '/home',
    );
  }
}

Route<dynamic> generateRoute(RouteSettings settings) {
  print('generateRoute');
  print(settings.name);
  return MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: settings.name));
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        print('here');
        return false;
      },
      child: Scaffold(
        body: Center(
          child: SelectableText("test"),
        ),
      ),
    );
  }
}

in yaml, add:

pubspec.yaml
flutter_web_plugins:
    sdk: flutter

name: bug
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_web_plugins:
sdk: flutter
cupertino_icons: ^1.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true

</details>

Also added <base href="/"> in the  tag of the web/index.html file.

Hi @ronytesler
Thanks for filing the issue,
Reproduced the issue using the following minimal code sample

minimal code sample
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';

void main() {
  setUrlStrategy(PathUrlStrategy());
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  @override
  void dispose() {
    super.dispose();
  }

  @override
  void initState() {
    super.initState();
  }

// This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return getMaterialApp(context);
  }

  Widget getMaterialApp(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: generateRoute,
      onGenerateInitialRoutes: (url) {
        print('onGenerateInitialRoutes called');
        return [MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: url))];
      },
      onUnknownRoute: (settings) => MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: settings.name)),
      initialRoute: '/home',
    );
  }
}

Route<dynamic> generateRoute(RouteSettings settings) {
  print('generateRoute');
  print(settings.name);
  return MaterialPageRoute(builder: (context) => MyHomePage(), settings: RouteSettings(name: settings.name));
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        print('onWillPop called');
        return false;
      },
      child: Scaffold(
        body: Center(
          child: SelectableText("test"),
        ),
      ),
    );
  }
}

logs
file:///Users/tahatesser/Code/flutter_master/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk.dill --no-sound-null-safety
[  +23 ms] <- compile org-dartlang-app:/web_entrypoint.dart
[+2549 ms] [
                      {
                        "simulator" : true,
                        "operatingSystemVersion" : "14.5 (18E182)",
                        "available" : true,
                        "platform" : "com.apple.platform.iphonesimulator",
                        "modelCode" : "iPhone13,2",
                        "identifier" : "D5A130FB-A402-4C16-8F33-7806BCE32682",
                        "architecture" : "x86_64",
                        "modelUTI" : "com.apple.iphone-12-1",
                        "modelName" : "iPhone 12",
                        "name" : "iPhone 12"
                      },
                      {
                        "simulator" : false,
                        "operatingSystemVersion" : "14.6 (18F5065a)",
                        "interface" : "usb",
                        "available" : true,
                        "platform" : "com.apple.platform.iphoneos",
                        "modelCode" : "iPhone11,8",
                        "identifier" : "00008020-001059882212002E",
                        "architecture" : "arm64e",
                        "modelUTI" : "com.apple.iphone-xr-1",
                        "modelName" : "iPhone XR",
                        "name" : "Taha’s iPhone"
                      }
                    ]
[   +3 ms] [
             {
               "simulator" : true,
               "operatingSystemVersion" : "14.5 (18E182)",
               "available" : true,
               "platform" : "com.apple.platform.iphonesimulator",
               "modelCode" : "iPhone13,2",
               "identifier" : "D5A130FB-A402-4C16-8F33-7806BCE32682",
               "architecture" : "x86_64",
               "modelUTI" : "com.apple.iphone-12-1",
               "modelName" : "iPhone 12",
               "name" : "iPhone 12"
             },
             {
               "simulator" : false,
               "operatingSystemVersion" : "14.6 (18F5065a)",
               "interface" : "usb",
               "available" : true,
               "platform" : "com.apple.platform.iphoneos",
               "modelCode" : "iPhone11,8",
               "identifier" : "00008020-001059882212002E",
               "architecture" : "arm64e",
               "modelUTI" : "com.apple.iphone-xr-1",
               "modelName" : "iPhone XR",
               "name" : "Taha’s iPhone"
             }
           ]
[+14015 ms] Waiting for connection from debug service on Chrome... (completed in 16.7s)
[        ] Synced 30.4MB.
[        ] <- accept
[        ] Caching compiled dill
[ +253 ms] Using Google Chrome 90.0.4430.212

[  +19 ms] executing: sysctl hw.optional.arm64
[   +6 ms] Exit code 1 from: sysctl hw.optional.arm64
[        ] sysctl: unknown oid 'hw.optional.arm64'
[ +768 ms] [CHROME]:
[   +1 ms] [CHROME]:DevTools listening on ws://<IP_ADDRESS>:50444/devtools/browser/ac8df3a2-f456-4802-9dfc-53e4cd0e73c6
[+6962 ms] DwdsInjector: Received request for entrypoint at http://localhost:50432/main_module.bootstrap.js
[   +8 ms] MetadataProvider: Loading debug metadata...
[  +15 ms] MetadataProvider: Loaded debug metadata (no sound null safety)
[   +8 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:50432/main_module.bootstrap.js
[+1809 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: false
[  +86 ms] DevHandler: Debug service listening on ws://<IP_ADDRESS>:50467/DMmLQxz1a2w=/ws

[  +29 ms] This app is linked to the debug service: ws://<IP_ADDRESS>:50467/DMmLQxz1a2w=/ws
[  +10 ms] Debug service listening on ws://<IP_ADDRESS>:50467/DMmLQxz1a2w=/ws
[        ] Running with unsound null safety
[        ] For more information see https://dart.dev/null-safety/unsound-null-safety
[   +4 ms] 🔥  To hot restart changes while running, press "r" or "R".
[   +1 ms] For a more detailed help message, press "h". To quit, press "q".
[        ] An Observatory debugger and profiler on Chrome is available at: http://<IP_ADDRESS>:50467/DMmLQxz1a2w=
[ +605 ms] DevTools activation throttled until 2021-05-18 04:24:14.657303.
[+2526 ms] onGenerateInitialRoutes called
[ +279 ms] The Flutter DevTools debugger and profiler on Chrome is available at:
                    http://<IP_ADDRESS>:9105?uri=http%3A%2F%2F<IP_ADDRESS>%3A50467%2FDMmLQxz1a2w%3D
[+33449 ms] DwdsInjector: Received request for entrypoint at http://localhost:50432/main_module.bootstrap.js
[        ] MetadataProvider: Loading debug metadata...
[   +6 ms] MetadataProvider: Loaded debug metadata (no sound null safety)
[   +2 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:50432/main_module.bootstrap.js
[+1632 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: false
[ +385 ms] onGenerateInitialRoutes called

Reproduced on the following channels

stable
master

✅
✅

Check flutter doctor -v outputs for each channel below

flutter doctor -v

✅ : Reproducible ❌: Not Reproducible

This highlights a problem with using onGenerateRoute and deep linking, onGenerateRoute will always push a new route when it recieves one from the OS or the URL bar in a browser. The best-practice is to use the Router widget (sometimes called "Navigator 2.0", although this is not the official name).
Here's a sample that uses the Router widget to get the correct behavior. It's using a small helper package, simplified_router, but you get the idea:

Router widget example
// main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:simplified_router/simplified_router.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:url_launcher/link.dart';

void main() {
  setUrlStrategy(PathUrlStrategy());
  runApp(ExampleApp());
}

class ExampleApp extends StatefulWidget {
  @override
  _ExampleAppState createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> {
  late final SimplifiedRouter _routerData;
  final navigatorKey = GlobalKey<NavigatorState>();

  _ExampleAppState() {
    _routerData = SimplifiedRouter(
      builder: _appBuilder,
      navigatorKey: navigatorKey,
      shouldNavigateTo: (String route) {
        return SynchronousFuture(route != '/no');
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return SimplifiedRouterScope(
      router: _routerData,
      child: MaterialApp.router(
        routerDelegate: _routerData.delegate,
        routeInformationParser: _routerData.parser,
      ),
    );
  }

  Widget _appBuilder(BuildContext context, String routePath) {
    return Navigator(
      key: navigatorKey,
      onPopPage: (route, result) {
        return route.didPop(result);
      },
      pages: [
        MaterialPage(
          key: ValueKey('/'),
          child: HomePage(
            routePath: routePath,
          ),
        ),
        if (routePath == '/stacked')
          MaterialPage(
            key: ValueKey('/stacked'),
            child: HomePage(
              routePath: routePath,
            ),
          ),
      ],
    );
  }
}

class HomePage extends StatelessWidget {
  final String routePath;

  const HomePage({Key? key, required this.routePath}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      child: Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Column(
            children: [
              SelectableText('route = $routePath'),
              TextButton(
                child: Text('Go to /stacked'),
                onPressed: () {
                  SimplifiedRouterScope.of(context).navigateTo('/stacked');
                },
              ),
              TextButton(
                child: Text('Go to /foo'),
                onPressed: () {
                  SimplifiedRouterScope.of(context).navigateTo('/foo');
                },
              ),
              Link(
                builder: (BuildContext context,
                    Future<void> Function()? followLink) {
                  return TextButton(
                    onPressed: followLink,
                    child: Text('This is a Link to /bar'),
                  );
                },
                uri: Uri.parse('/bar'),
              ),
            ],
          ),
        ),
      ),
      onWillPop: () async {
        print('onWillPop');
        return false;
      },
    );
  }
}

# pubspec.yaml
name: flutter_issue_82660
description: A new Flutter project.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_web_plugins:
    sdk: flutter
  simplified_router: ^0.0.3
  url_launcher: any

dev_dependencies:
  flutter_test:
    sdk: flutter
flutter:
  uses-material-design: true

Apps using onGenerateRoute will always push routes onto the Navigator's stack when Flutter receives a new intent from the OS. So when you change the URL from /home to /home/a and then /home again, the stack will have three route entries corresponding to['/home', '/home/a', '/home'].
Since there aren't any pops are happening (only pushes), WillPopScope doesn't get an opportunity to veto the route. If you add an AppBar to the Scaffold  the app will display a back button that can trigger a pop. The browser back button only sends a new intent to Flutter, which is why you will see a push animation and an additional route on the stack when using HashUrlStrategy.
One of the unfortunate things about PathUrlStrategy is that it refreshes the page when the user changes the route path in the URL bar. But things work as expected when the user changes the URL through the app (for example using the Link widget or the Router APIs as shown in the example above.) I think this is working as intended, but I'm not sure.

@johnpryan Thanks, but also when I use the Router widget (together with PathUrlStrategy) the WillPopScope is not working.

I see. You're right, the browser back button only triggers the WillPopScope callback when using onGenerateRoute with HashUrlStrategy. In the Router sample, the callback isn't triggered with either HashUrlStrategy or PathUrlStrategy (clicking "Go to /stacked" and pressing the browser back button.)

cc: @chunhtai who might also know why this is happening.

willpopscope should only be called if you use navigator 1.0
For Router, browser back button will be treated as deeplinking, it will call setNewRoutePath with the previous url

@chunhtai But the previous url is not of my app. How can I warn the user before he leaves my app?

If you are using Router, you can prevent the URL from changing by doing nothing in setNewRoutePath in RouterDelegate:
  @override
  Future<void> setNewRoutePath(_Route path) async {
    if (await shouldNavigateTo(path.path)) {
      // Update app state with the new path
    } else {
      // Keep the current URL, notify listeners so that Router re-requests the
      // currentConfiguration.
      notifyListeners();
    }
  }

Ah I see, I don't know whether we have API to prevent browser from leaving the flutter APP. Maybe @mdebbar will know?

@chunhtai is this working as intended? Preventing the browser from leaving the flutter app seems like a separate issue.

I think we still need to figure out why WillPopScope is not called when pressing back button using nav 1

@johnpryan I tried that but 'setNewRoutePath' is not called. It's called only when the previous url is also of my app.

I have the same problem.
If I set the screen as "home" in MaterialApp, onWillPop is called properly, and the back button works as intended (pressing it will trigger, for example, back-navigation INSIDE the app).
But if I use onGenerateRoute and onGenerateInitialRoutes to use a custom URL (in my case, to get parameters), onWillPop isn't called anymore, and pressing the back button will exit the app.

I am seeing one more issue. I am NOT using the browsers back button. However my code uses onGenerateRoute and onGenerateInitialRoutes.
When I navigate from page1 to page2 there is a BACK button on Page2.
When I press the back button (inside flutter code) on Page2 - it just does pop().
The Page1 refresh is not triggered. The Page1 is now blank (build is not called)

I am able to reproduce this issue on the latest stable and master channels. onGenerateInitialRoutes is called instead of onWillPop when the browser's back button is pressed.
Code Sample
  flutter doctor -v
[✓] Flutter (Channel master, 3.11.0-2.0.pre.55, on macOS 13.3 22E252 darwin-arm64, locale en-NG)
    • Flutter version 3.11.0-2.0.pre.55 on channel master at /Users/dammya/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 835b892d7f (4 days ago), 2023-05-07 01:30:22 +0530
    • Engine revision 23f730efbf
    • Dart version 3.1.0 (build 3.1.0-83.0.dev)
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/dammya/Library/Android/sdk
    • Platform android-33, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/dammya/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2022.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.78.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.50.0

[✓] VS Code (version 1.78.0)
    • VS Code at /Users/dammya/.Trash/Visual Studio Code 20.07.05.app/Contents
    • Flutter extension version 3.50.0

[✓] Connected device (4 available)
    • sdk gphone arm64 (mobile)  • emulator-5554                        • android-arm64  • Android 11 (API 30) (emulator)
    • iPhone 14 Pro Max (mobile) • D7F3302D-D66F-4B89-B8CF-DBEE1CDB5449 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 112.0.5615.137

[✓] Network resources
    • All expected network resources are available.

• No issues found!

[✓] Flutter (Channel stable, 3.7.12, on macOS 13.3 22E252 darwin-arm64, locale
    en-NG)
    • Flutter version 3.7.12 on channel stable at /Users/dammya/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4d9e56e694 (3 weeks ago), 2023-04-17 21:47:46 -0400
    • Engine revision 1a65d409c7
    • Dart version 2.19.6
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version
    32.1.0-rc1)
    • Android SDK at /Users/dammya/Library/Android/sdk
    • Platform android-33, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/dammya/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      11.0.12+0-b1504.28-7817840)

[✓] IntelliJ IDEA Community Edition (version 2022.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.78.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.50.0

[✓] VS Code (version 1.78.0)
    • VS Code at /Users/dammya/.Trash/Visual Studio Code 20.07.05.app/Contents
    • Flutter extension version 3.50.0

[✓] Connected device (4 available)
    • sdk gphone arm64 (mobile)  • emulator-5554                        •
      android-arm64  • Android 11 (API 30) (emulator)
    • iPhone 14 Pro Max (mobile) • D7F3302D-D66F-4B89-B8CF-DBEE1CDB5449 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                •
      darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 112.0.5615.137

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!


Add option to initialize workspaces for DXP (EE) or Portal (CE)

Currently, only CE is supported. It would be nice to have an option to initialize a workspace as DXP or Portal, probably as a flag like the version (e.g. --dxp or --portal, with aliases like --ee and --ce).

The implementation adds a new flag: --edition or -e that takes either "dxp" (i.e. enterprise edition) or "portal" (i.e. portal edition). If there's no explicit edition, "portal" is the default one.
Also the code has been reworked to use https://github.com/lgdd/liferay-product-info instead of the official JSON and its difficult to parse in most languages (especially Go in my case).


Replaced "language" config setting with "algorithm-location"

Awesome stuff @StefanoRaggi! I like it!


gh-167 Move decoding into filesystem.get_all_files

Instead of decoding in elodie.py I moved the decoding to happen further down the stack in filesystem.get_all_files. That seemed to be the culprit of not unicode strings. Removed calls to _decode from elsewhere so bugs surface sooner than being hidden by random calls to _decode throughout the code.

@misterpipine do you mind confirming that these changes work for you as well? The tests pass but since I wasn't able to reproduce the import error it would be nice to get an additional confirmation.

Coverage decreased (-0.2%) to 91.955% when pulling 8beeb500595fc9daae0cbfadcfc9a8bec9085bdd on unicode-error-167 into 328aed6dfdd89b562ba962a0d3e0b241c005730d on master.

Coverage decreased (-0.4%) to 91.749% when pulling<PHONE_NUMBER>1f45bd3c61553072fedf2cd6cedd84 on unicode-error-167 into 328aed6dfdd89b562ba962a0d3e0b241c005730d on master.

Coverage increased (+0.05%) to 92.241% when pulling 35833502e9c62d8a9c92adbda3bd9c5ee93b5817 on unicode-error-167 into 328aed6dfdd89b562ba962a0d3e0b241c005730d on master.

Coverage decreased (-0.7%) to 92.352% when pulling 0db66737920b4313ff0159609576dca2a529545a on unicode-error-167 into 2e0a59b7d8cdad4cd0c96e1704ec71d337b5b4f5 on master.

Coverage decreased (-0.6%) to 92.483% when pulling b428970e85060a5a45618f48e70da89f78574a10 on unicode-error-167 into 2e0a59b7d8cdad4cd0c96e1704ec71d337b5b4f5 on master.

Closing this. After a lot of fighting the current solution in master is cleaner and all tests pass.


Clarity on shortcut for moving files in normal mode

Description
Could you clarify what --/m means in terms of the default shortcut needed to move a file(s) in normal mode?
In the readme/docs, each action has a <C-*> mapping for normal mode, apart from move.
Neovim version
NVIM v0.6.0-dev+2040-g8cbe100fc
Build type: Release
LuaJIT 2.1.0-beta3

Operating system and version
macOS 11.6.1
Steps to reproduce
select some files
navigate to target folder
try and use the default shortcut to move
Expected behavior
A <C-M> shortcut or similar
Actual behavior
Typing -- just enters that string into the text input box.
Minimal config
vim.cmd [[set runtimepath=$VIMRUNTIME]]
vim.cmd [[set packpath=/tmp/nvim/site]]
local package_root = '/tmp/nvim/site/pack'
local install_path = package_root .. '/packer/start/packer.nvim'
local function load_plugins()
  require('packer').startup {
    {
      'wbthomason/packer.nvim',
      {
        'nvim-telescope/telescope.nvim',
        requires = {
          'nvim-lua/plenary.nvim',
          'nvim-telescope/telescope-file-browser.nvim',
        },
      },
      -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
    },
    config = {
      package_root = package_root,
      compile_path = install_path .. '/plugin/packer_compiled.lua',
      display = { non_interactive = true },
    },
  }
end
_G.load_config = function()
  require('telescope').setup()
  require('telescope').load_extension('file_browser')
  -- ADD INIT.LUA SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
end
if vim.fn.isdirectory(install_path) == 0 then
  print("Installing Telescope and dependencies.")
  vim.fn.system { 'git', 'clone', '--depth=1', 'https://github.com/wbthomason/packer.nvim', install_path }
end
load_plugins()
require('packer').sync()
vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua load_config()]]

Terminal emulators cannot distinguish between <C-m> and <CR>; therefore, there is no analog for moving a file with ctrl prefix from insert mode as of now and you can only move multi-selected files to the target directory from within normal mode.

Hmm. I suppose I would expect it to have something mapped. Even if users may want to change it. I’m going to trial  for ‘Shift’ or  for ‘moVe’. Will see how it sticks and what it conflicts with! 👍
Thanks for the clarity.

Hmm. I suppose I would expect it to have something mapped.

I understand. It's also not that well know as to why <C-m> cannot be mapped (e.g. it came up a couple of times already in telescope-core as well).
I'll do my best to invest a bit more significant time again into the release prior to deprecating the file browser upstream. Then, I'll carefully revisit the defaults mappings once more.
Unfortunately, I'm quite preoccupied at the moment for more serious work.


Added the dotnet example

Justification
In order to represent how to use the APIs created in the TestMonitor service in the SystemLink Enterprise version, there is a need to create examples that will show how to call the APIs, what details are needed to be sent with the API call and etc.
Implementation
Since there is already an example available that will use the SLS, I have copied that example and modified it to use the SLE server
Testing
Manual testing completed

There are two image files that are showing screenshots from SLS. We should either remove these or update them to have the new SLE images.

After talking with @TJ-G today, I think that we want to make a few modifications here to keep our repo structure clean. We want to have one top-level folder for each example. That folder should have a short, descriptive name and a readme.md file that describes the example. The Simple ETL Example is the correct pattern to follow here.
When we have a .sln file and project files like in this one for .NET, we can have the solution file in the top-level of the folder and the project files appropriately related under that.

@Madhan-Reddy-ni We don't quite have the structure right here. We don't want to have an examples folder. We just want to have a list of folders at the top-level that each have an example in them. The fix is to rename the example folder here to something like TestMonitor dotnet Example

@adamarnesen, I have renamed the examples folder name to the DotNet Examples, since we will be adding more DotNet examples related to other services also(not only Test Monitor) and we can add them inside this folder. We will also be adding the Python examples and we can create one more folder as Python Examples and add the python related examples in here


Profile picture choose image

It says that I don't have a image uploaded, but I do have a custom pfp.

The choose file box does not have anything actively selected from your files for you to upload so it says that you have chiosen no files.


implement basic interface for net emissions token network

Implement a basic interface for net emissions token network for dApp development, based on create-eth-app.

Done.  See https://www.youtube.com/watch?v=C-cUjQLDGJw


Bump build submodule to 2672eeb

Description of your changes

Bumping the submodule to pick up a newer version of up CLI xref https://github.com/upbound/squad-upbound-cloud/issues/1298
I have:

[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested

n/a

/test-examples="examples/azure/resourcegroup.yaml"


Need to provide example of consuming CMake drake from catkin / ament

Relates to https://github.com/RobotLocomotion/drake/issues/12773
Steps:

[x] #168 catkin
[x] colcon
[x] Run CI

colcon rather than ament probably makes more sense for the future.

Ah, well, I think it's using the colcon tools, but ament_cmake for specifying C++ builds?

Exactly.

FYI see https://github.com/RobotLocomotion/ros-drake-vendor/issues/8.  Apparently hard-coding /opt/drake into our examples CMakeLists was a bad idea, and we're planning on ripping that out.


[SMALLFIX] using <> efficiently

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/9580/
Test PASSed.

LGTM


Add modules("jdk.unsupported")

To run in the distributable version you need to add modules("jdk.unsupported").
This should be documented.

Can you provide more details? what is distributable version and where to document that?

If a Compose Multiplatform app is build using this library there needs to be this entry or else the app will crash.
compose.desktop.application {

    nativeDistributions {

        modules("jdk.unsupported")
    }
}


Create resizable workspace side content

Features

Side content renders on right of workspace by default
Side content is resizable vertically
Side content can be hidden by dragging to the top, or expanded by dragging to the bottom
Absolute height of side content is persistent on dismount/remounting
Draggable bottom border of side content is never offscreen (changes dynamically with screen height)
Cleaned up scss a bit

Added snapping for the Editor as well 👨💻


Monesy - Budget App

What I have done 🔨  :

Added a Splash screen:

A simple page with the name of the app and links to the sign up and log in pages.

Added Sign up and log in pages:

The user should be able to register in the app with full name, email and password (all mandatory).
The user can log into the app using email and password.

Added Home page (catagories page):
Added Transactions page.
Added "Add a new category" page.
Added "Add a new transaction" page.
Added styling to all the pages to math the wireframe!
Added icons to the page!
Add rspec-rails testing for:

login_page view
Categories index
Category show page.
Expenses index page.
Expense show page.

Added project description to README.md file.
Added project video explaining what I have done: Video here
Live Demo link Try it here

Thank's @rloterh for the amazing review 😄 . I have improved all the required changes, and now it's ready to go. I hope you like it 😄 🔥


Cannot find entries in large file (5Gb)

I'm trying to find a specific entry in a zip file with size 5Gb.
I have tried to go through all the entries with a for and I also have tried open the specific entry with its path.
But seems that in both cases nothing is found.
Code with for:
let archiveURL = URL(string: url)
guard let archive = Archive(url: archiveURL!, accessMode: .read) else {
   return reject("archive_error","Cannot open archive", nil)
}
for entry in archive {
    let path = entry.path;
    if path.contains("inbox/message"){
       return "found"
    }
}

Code for specific entry:
if let entry = archive["inbox/message/index.html"] {
   return "found"
}

ZIP Foundation does currently not support ZIP64. Hence, neither archives nor entries with a file size over 4GB are supported.


functions that should return unsigned int

review and update functions, such as computeMerkle, that should return uint256

fixed in https://github.com/ethereum/btcrelay/commit/5844c2225e97395da2f326cc6d59c49d116a0944


Where is the AutoDraw.sketchplugin file?

This is no file called AutoDraw.sketchplugin on this repo

It seems like you downloaded zipped repository w/ source code.
Here is a link to release


Quick edit and topit title/subject

When editing with quick edit the first message of a topic, it would be nice to change also the "title" of the topic along with the body and the subject (I mean the one in category_header).
Originally reported by @scripple here.

Yeah, it looks like that to do it The Right WayTM it a bit more work than I thought...
Dunno, dunno. beta 2 for the mean time.


Addded Split the binary string into substrings with equal number of 0s and 1s program

Great work @romangeek please give this repo a star if it really helped you to complete your PR.
Also follow me for follow back if you want to get connected with me for any such open source contribution program. Thank you 😊


Not working on www.getnoodl.es

Trying to use get-css on my own app, Noodles. The login page (http://www.getnoodl.es/login) has the whole application's CSS, but get-css returns Error: getaddrinfo ENOTFOUND getnoodl.es on it.

Hey, thanks for reporting this! It looks like it's a bug with the url normalization. Currently, we've failed to specify stripWWW: false so the url is being changed from www.getnoodl.es to getnoodl.es which doesn't resolve. I should have a PR in by the end of the day.

$ npm i -g get-css
$ getcss www.noodl.es

Awesome, thanks for the quick fix on that! We should get that merged into cssstats-core as well.

This has now been added to cssstats and deployed to cssstats.com : )

Awesome! Thanks.


[logstash] Fix headless service ports spec

Fixes #765

Since this is a community submitted pull request, a Jenkins build has not been kicked off automatically. Can an Elastic organization member please verify the contents of this patch and then kick off a build manually?

jenkins test this please

jenkins test this please

Hi @itssimon, thanks for fixing my mistake 👍
I just added some test and this should be good to merge after CI build.

also merged master branch to get https://github.com/elastic/helm-charts/pull/798 fix

jenkins test this please

jenkins test this please

backported to 6.8, 7.9 and 7.x branches


runBlockingTest does not really block

In kotlin-coroutines-end, comments of the refreshTitle_MockitoVersion() test recommends to use runBlockingTest to launch the coroutine and wait for its completion.
Since the runBlockingTest block and the viewModel do not share the same coroutine scope (TestCoroutineScope on one hand vs viewModelScope in the other) or the same Job, the runBlockingTest does not wait for completion when the refreshTitle switches execution to Dispatchers.IO (setting a break point or a delay inside the TitleRepository.refreshTitle method shows that the tests completes without waiting for a response).
Shouldn't the runBlockingTest's scope and the viewModelScope share a Job to be able to wait for each other?

Since it will inject dispatchers Main which viewModelScope, they'll share the test dispatcher. They don't need to share a job in order to control execution order due to TestCoroutineDispatcher.
The completion checking isn't quite as strict as if they shared a scope, but it is sufficient for most use cases (such as this one). It will unfortunately not catch suspended coroutines started by calling launch in viewModelScope when coded this way.


Support BGS creations

In order to support these official BGS creations, we need to know their plugin names.

[ ] Allied Winter Camo Skin Pack (300 CC)
[ ] CombaTech Digital Camo Skin Pack (300 CC)
[ ] Creature Plushie Set (300 CC)
[x] Escape (500 CC)

I've added the official BGS creations Allied Winter Camo Skin Pack, Creature Plushie Set and Escape to the list, that were added on the 20th of August 2024.

Allied Winter Camo Skin Pack  -  sfbgs02b_a.esm
CombaTech Digital Camo Skin Pack  -  sfbgs00f_a.esm
Creature Plushie Set  -  sfbgs031.esm

StarSim: Mining Conglomerate  -  qog-miningconglomerate.esm
Starfield Core  -  qog-starfieldcore.esm
Beowulf Healthy Parts  -  beowulfhealthyparts.esm
Additional Weapon Icons  -  additionalweaponicons.esm
Baka REV-8 Hauler  -  bakarev8hauler.esm
Shade's Vehicle Tuner  -  shades_vehicle_tuner.esm
Starfield Extended - Aggressive Leveled NPCs  -  starfield extended - aggressive leveled npcs.esm
D.E.R.E.K.  -   sksfderek.esm
Life of Crime - Crimson Market  -  loc-crimsonmarket.esm

Neon Ramen  -  ramen.esm
Quantum Stealth Operations (QSO) Safehouse -  qso safehouse.esm
Interesting Points of Interest  - mk_pois.esm
EliTek Aerospace - Crimson Fleet ship habs  -  ceejcrimsonhabs.esm
Hide Empty Ship Habs  -  onek_noemptyshiphabs.esm
Allied HVAP Assault Carbine (Not Rifle)  -  weap_hvap.esm

Thanks for the plugin names of the official BGS creations, I'm gonna add them in a bit.
The rest of the plugin names we wouldn't add to the masterlist just for the sake of it. If there is a specific reason to add them, then yes of course we can add them. Then we would also require links to where those plugins can be downloaded from.

Enforcer - Tactical Pistol  -  novafinch_enforcerpistol.esm

Thanks for the plugin names of the official BGS creations, I'm gonna add them in a bit.
The rest of the plugin names we wouldn't add to the masterlist just for the sake of it. If there is a specific reason to add them, then yes of course we can add them (we would need to know the reason, e.g. if they should load in a specific spot or if we should attach a message to them). Then we would also require links to where those plugins can be downloaded from.

links can be easily found in the creativity club by my titles. If you don't need it, then I'm gone. I still have plenty of this... There are also partial or full translations of RU

I've added the offcial BGS creations, thanks!
The rest of the list, while interesting, doesn't really help much. Why do you want to have these added to the masterlist? If there are valid reasons and we know these reasons, than it's no problem adding them. However, in contrast to the ones the initial post of this issue is talking about, those other plugins are not made by Bethesda - which means that there needs to be a purpose in adding them to the masterlist. Just the fact that they are part of the Verified Creations program is not a good enough reason to add them, as verified creations (apart from the ones made by Bethesda themselves) are not considered "official content".
As such I'm closing this issue. If you feel that some of the other mentioned plugins still should be added to the masterlist, please open a new issue for each case, with information on why it should be added & a link to where the mod can be downloaded from.


Is any performance benchmark available for spark Cassandra connector?

I use NYC taxi data set of approx. 30 million rows with 5 GB storage. I use sparklyr and crassy package to read/write data from/to spark cassandra. The experiments are performed on a  cluster of 4 nodes (8 cores, 16GB RAM each); and spark cassandra are collocated on each node. I got read latency 4.032 seconds to read data from cassandra to spark as dataframe. Then I add two more columns to dataframe and then write back to cassandra. I got write latency 7176.550 seconds. Why i got too fast read and too slow write? I have used all spark cassandra connect parameters with default values. even if i changed the config$spark.cassandra.input.split.size_in_mb, it gives me the almost same read latency.
are these results fine? Is there any benchmark available to compare my results?

@sparkcassuser we are no longer using GitHub Issues on this project. See this link for various ways to contact other community users:
https://github.com/datastax/spark-cassandra-connector#community


Addred "Crash me Now" menu item to test app re-starting when crashing

added "Crash me now" menu item.
also removed Sensorberg project reference, and chnaged to use nuget package instead

closing this, since we need to discuss whether the debug & testing functionality should be added to the master or not


Added schemas for weather configuration

Hey @AALEKH! It's coming along. I think we will need a field for the Wunderground API key too...

Cool, Will include it

Also @AALEKH : rename com.snowplowanalytics.snowplow/weather_information to com.wunderground/weather

cc: @alexanderdean

Gosh sorry @AALEKH - my comment was meant for @chuwy!

Why wunderground?

Sorry for confusion, this was a brain freeze yesterday, I was looking at these PRs as if they were created by @chuwy not @AALEKH . Closing to prevent further confusion.


Support adding/dropping Linux capabilities

Also allow agent to be started with a capability whitelist.
If this is specified, only these capabilities will be allowed
to be added.

Looks good, but a few thoughts:

perhaps the "cap" whitelist should be stored on the helios master, so that it can report an error if someone tries to create a job with capabilities that are not allowed? Looks like in this patch, any unallowed capabilities are simply dropped.
representing the "caps" as a Set instead of List makes checks like "is every requested cap in the whitelist" a simpler operation
is "cap" a well enough known name for this sort of thing? I'd go with calling it "capability" inside the json unless it's really standard

also I feel like it is safer for the default to be an empty whitelist, i.e. nothing is allowed

1 and 2. good ideas
3. capAdds was nice and terse compared to addedCapabilities, but I'll go with a bit longer but clearer.

Current coverage is 48.98%

Merging #892 into master will increase coverage by +0.38% as of e019aa1

@@            master    #892   diff @@
======================================
  Files          271     271
  Stmts        12684   12694    +10
  Branches      1648    1635    -13
  Methods          0       0
======================================
+ Hit           6165    6218    +53
  Partial        467     467
+ Missed        6052    6009    -43

Review entire Coverage Diff as of e019aa1

Powered by Codecov. Updated on successful CI builds.

yay, build is green

a few minor things above but :+1: if they are all addressed


update existing fixtures/vocabularies

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
We are trying to add the German language of vocabularies - in order to populate the new language strings we need some kind of CLI command to update the existing vocabularies into the database and ES.
Describe the solution you'd like
A clear and concise description of what you want to happen.
We have a CLI command invenio rdm-records fixtures which only adds the vocabularies if not present, and does NOT update the existing ones.
should have a similar Command that does the updates of existing fixtures/vocabularies and adds new string e.g. translated strings.
Additional context
Add any other context or screenshots about the feature request here.
There is this PR - that could be used to test while creating the CLI command: inveniosoftware/invenio-rdm-records#889

This is tracked on the product board as https://github.com/inveniosoftware/product-rdm/issues/48


chore: updating pt/es/de/fr/tr/uk/ru translations

Description
Weekly translation flow - by Globalization Workstream
Notice

[x] Have you followed the guidelines in our Contributing guide?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[x] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Minor changes:

Updated a string which didn't follow the recommendations to use the %{apy} variable in prevision of when it would be updated it in English.
Updated it in English too. Hereby notifying @reallybeard since last time we discussed I've suggested he could fix it in a separate PR, but since it's such a minor fix I figure we can just do it now.

@thesmithdao @firebomb1 Fixed the title to match conventional PR titles (there was an additional space prepended to the PR title), please run gc --allow-empty -m "chore: trigger CI" and push it

@gomesalexandre  Done, thanks for the heads-up !


better wording about enabling packit-user in GitLab

The current wording confuses me. What means the source? I, as a maintainer, got this in an email when MR was created. I had no idea that the source meant the forked repo of the author who created the MR.

RELEASE NOTES BEGIN
￼
RELEASE NOTES END

Just a note about the email notification:
Since we are not able to edit the text of the notification (i.e. provide reasoning), we plan to not ask for the permissions by default and suggest users configure that if they want.

recheck