Prefixing exported labels with exported_ has problematic edge cases

This is extracted from #5845 .
When Prometheus adds target labels to a scrape, conflicts with existing labels may arise and have to be solved. The docs specify the following: “… label conflicts are resolved by renaming conflicting labels in the scraped data to "exported_" (for example "exported_instance", "exported_job") and then attaching server-side labels.”

What happens if the target labels contain both foo="a" and exported_foo="b" and then a scrape contains its own label foo="c"? End result could be:

`foo="a",exported_foo="b"
`foo="a",exported_foo="c"
`foo="a",exported_foo="b",exported_exported_foo="c"

What happens if a scrape contains both foo="a" and exported_foo="b" and then there is a target label foo="c"? End result could be:

`foo="c",exported_foo="a"
`foo="c",exported_foo="b"
`foo="c",exported_foo="a",exported_exported_foo="b"

In case 2, the current code will do i. But that's not precisely specified in the docs. One might also expect iii.
Case 1 is more interesting, as the behavior depends on the order the target labels show up in the iteration. It could be i. or iii. That's in any case an undesired behavior.
For double fun, case 1 and case 2 could be combined (both the scrape and the target labels contain both a foo and an exported_foo label).
While this is unlikely to ever show up, we should do something about it. The most conservative approach would be to specify in the docs that the behavior is undefined if exported labels and/or target labels already have a prefix exported_. The most invasive change would be to go for case iii., essentially prefixing exported_ to exported label as often as necessary to avoid any name collisions. That's technically a breaking change, but one might argue that's what the docs so far suggest (in a very vague fashion).
For the record, this has never been reported to be a problem in many years of widespread Prometheus usage.

hey @beorn7 @brian-brazil  can i work on this issue, and it will be good awesome thing, if you can give me pointer on how to work on it.

Sure, your contribution would be very much appreciated. I'm not sure, though, if this is a good first issue if you have never worked with the Prometheus codebase (despite the "low hanging fruit" label that Brian added).
Having said that, the starting point would be to find the code path where the current behavior is implemented and then take it from there. The challenge is to implement something that can handle case 1 and case 2 if they happen at the same time in a reproducible manner, i.e. not depending on the order the labels are processed.

If it doesn't work out, we can remove the low hanging fruit label. It's sometimes hard to judge.

Thanks a lot Sir for the pointer, i will start working on it [ and yes, it will be my issue to start my Open Source Contribution :) ].

Regarding this issue, i have some doubts, 1) do i have to write a generalised case to handle labels, from target or from scrape or from both, 2) i think i have found the right part to change [ i.e is function "mutateSampleLabels" in "scrape.go in GOPATH/src/github.com/prometheus/prometheus/scrape", so am i going in right way, or i am looking in wrong file. @beorn7 @brian-brazil

Just mutateSampleLabels, mutateReportSampleLabels is for up and friends which only get target labels so can't clash.

@brian-brazil i have made some changes in the code. But right now, what should i do now as i don't know how to write tests for it. or should i directly submit PR for it.

Let's start with the PR so we can get the behaviour agreed upon, and then we can talk about tests.

I think the approach in https://github.com/Transwert/prometheus/commit/9046822e5460c8d94bb1f7fba87bc811e5e6f01c wouldn't work (not even with the trivial fix I have suggested there).
The problem is that a scrape could contain a whole chain of labels like {foo="a", exported_foo="b", exported_exported_foo="c", exported_exported_exported_foo="d"}. If we have then a target label {foo="t"}, we probably want each of the existing labels get another exported_ prefixed. Final result:
{foo="t", exported_foo="a", exported_exported_foo="b", exported_exported_exported_foo="c", exported_exported_exported_exported_foo="d"}.
I think we cannot use the shortcut approach as in the existing code. For each target label, we have to check if a label of the same name already exists and then recursively check if a label with exported_  prefixed exists. At the end of the recursion, the prefixing can finally be applied, and when going back to the call stack, all other labels will get adjusted.

And WRT to target labels with exported_ prefix: I think it will work out if we make sure to apply the target labels with the lowest number of prefixes first, and ending with the target labels with the highest numbers of prefixes. ({foo="a", exported_foo="b", exported_exported_foo="c", exported_exported_exported_foo="d"} could also be given as target labels. The semantic is, I guess, that the explicitly given target labels will prevail, and all the labels in the scrape will be prefixed with exported_ sufficiently often to not clash with any target labels and not with each other.

(And yeah, these are all pathological corner cases. But if we want to fix this, we have to take those into account, too.)

Given how dense my comments above are, we should really get rid of the 'low hanging fruit' label.

I think the approach in Transwert@9046822 wouldn't work (not even with the trivial fix I have suggested there).
The problem is that a scrape could contain a whole chain of labels like {foo="a", exported_foo="b", exported_exported_foo="c", exported_exported_exported_foo="d"}. If we have then a target label {foo="t"}, we probably want each of the existing labels get another exported_ prefixed. Final result:
{foo="t", exported_foo="a", exported_exported_foo="b", exported_exported_exported_foo="c", exported_exported_exported_exported_foo="d"}.
I think we cannot use the shortcut approach as in the existing code. For each target label, we have to check if a label of the same name already exists and then recursively check if a label with exported_ prefixed exists. At the end of the recursion, the prefixing can finally be applied, and when going back to the call stack, all other labels will get adjusted.

the case you are saying to check, isn't it will be very complicated and time-consuming to check for all labels, suppose for example we have  label's list as {foo="a", exported_foo="b", exported_exported_foo1 ="c", exported_exported_foo2 = "d", exported_exported_exported_foo2 ="e", exported_exported_exported_exported_exported_exported_foo1 = "f"}  [ it can get much complicated]. but the point is for each different base labels present in initial label list. we might have to check for each different foo's presence recursively.
which i think, might shouldn't be preferred as maybe we can add more generalized rule in docs for prohibiting such label's addition, which wll prevent from changing this whole part

I would prefer to have a solution that can deal with the general case but has decent performance in the most likely case of no clashes at all. I can imagine a recursive solution is just fine as it only has to enter the recursion in those pathological cases described above. It might be a tiny bit more expensive than the current solution, but I doubt it will matter in practice. We can test that.
I would only change the spec if we are confident the performance penalty is so large that we have no other choice.

Ok fine, but i would like to continue work on it, if i might not able to cover the problem wholly, i will ask for help :)

Sounds good. Also, feel free to pick up a different issue if this one is getting too frustrating. As said, it's probably a quite tricky one after all and not necessarily a good starter project.

Not sure if this is relevant, but I've found that in the newest version of prometheus the instance label is being overridden. Even using exported_instance does not show up in the metric. I am using prom/mysqld-exporter and this could be an issue with the exporter and not prometheus. Instance shows up as test here.
# Default values for prometheus-mysql-exporter.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1

image:
  repository: "prom/mysqld-exporter"
  tag: "v0.11.0"
  pullPolicy: "IfNotPresent"

service:
  name: mysql-exporter
  type: ClusterIP
  externalPort: 9104
  internalPort: 9104

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #  cpu: 100m
  #  memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}

podLabels: {
  "instance": "test"
}

annotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: "/metrics"
  prometheus.io/port: "9104"

# mysql connection params which build the DATA_SOURCE_NAME env var of the docker container
mysql:
  db: ""
  host: "redacted"
  param: ""
  pass: "redacted"
  port: 3306
  protocol: ""
  user: "exporter"

# cloudsqlproxy https://cloud.google.com/sql/docs/mysql/sql-proxy
cloudsqlproxy:
  enabled: false
  image:
    repo: "gcr.io/cloudsql-docker/gce-proxy"
    tag: "1.11"
    pullPolicy: "IfNotPresent"
  instanceConnectionName: "project:us-central1:dbname"
  port: "3306"
  credentials:
    '{
      "type": "service_account",
      "project_id": "project",
      "private_key_id": "KEYID1",
      "private_key": "-----BEGIN PRIVATE KEY-----\sdajsdnasd\n-----END PRIVATE KEY-----\n",
      "client_email"<EMAIL_ADDRESS>      "client_id": "111111111",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/user%40project.iam.gserviceaccount.com"
    }'

# mysql exporter collectors https://github.com/prometheus/mysqld_exporter#collector-flags
collectors: {
  global_status: true,
  global_variables: false,
  slave_status: false,
  info_schema.tables: false
}

@VihanAgarwal97 instance is just a pod label here. Whether it makes it into a Prometheus label is a question of the Prometheus K8s SD config. In any case, I recommend to discuss that on the prometheus-users mailing list and not here.

@roidelapluie asked me in #6707 to sketch out the algorithm more explicitly, which I'm doing now.
Terminology:

To suffix a label means to append _exported to the label name.
A suffixed label is one with at least one _exported suffix. The suffix may be the result from suffixing, or it was there from the beginning.
A n-times suffixed label is one with n concatenated _experted suffixes, e.g. a 3-times suffixed label foo has the label name foo_exported_exported_exported.
An exposed label is a label in a metric scraped from a metrics endpoint.

The goals here are the following:

Target labels have to prevail, i.e. the algorithm must never suffix a target label.
Never “lose” a label by naming two or more labels the same.
For each pair of exposed labels with the same un-suffixed label name, one label will be n-times suffixed before and m-times suffixed after application of the algorithm, the other one will be i-times suffixed before and j-times suffixed after application of the algorithm. The algorithm guarantees that m > j if n > i and vice versa.

Algorithm:

Identify every group of labels that consists of more than one label with the same un-suffixed name.
Within each group, sort the n-times suffixed labels by ascending n.
For each label outside of a group, repeatedly suffix that label until it does not clash with any target label.
For each group, go through the labels in the group as sorted before. For each label, repeatedly suffix that label until it does not clash with any target label nor with any exposed label nor with any previously suffixed label in the group.

(Note: My confused brain inverted prefix to suffix. I have now edited the above to match reality.)

Extreme example: Exposed labels: foo, exported_foo, exported_exported_exported_foo.
Target labels: foo, exported_exported_foo.
Target labels stay as they are, and the exposed labels are changed as follows:

foo → exported_exported_exported_exported_foo
exported_foo → exported_exported_exported_exported_exported_foo
exported_exported_exported_foo → exported_exported_exported_exported_exported_exported_foo

Those examples seem okay to me (not sure that's the most intuitive way, but it's such a weird case that having the semantics specified is sufficient.)

Yes, precisely. This will ~never happen in practice. We just need a defined behavior if it does.

We only check for duplicate labels at the tsdb level. What if we scrape
{foo="bar",foo="barfoo"}
With target label {foo="foobar"}
Do we have exported_foo=bar exported_exported_foo=barfoo foo=foobar?
Le lun. 10 févr. 2020 à 19:33, Björn Rabenstein<EMAIL_ADDRESS>a écrit :

Yes, precisely. This will ~never happen in practice. We just need a
defined behavior if it does.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/prometheus/prometheus/issues/5861?email_source=notifications&email_token=AACHHJRDBS5BLMHZCJEBLVTRCGMYRA5CNFSM4ILJLEWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELJXNTQ#issuecomment-584283854,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACHHJSSXEC5XOPCSPF6J3TRCGMYRANCNFSM4ILJLEWA
.

That should be a scrape error.

At least we must not resolve that invalid scrape by prefixing.

Streamlined algorithm (should have the same result, but now with computational cost in mind):

Create a list with all exposed labels that conflict with target labels.
Sort that list by length of label names.
In order, prefix each label in the list as often as required to not conflict with target labels, other exposed labels, or previously prefixed labels.

Step 1 is the same cost as what we do currently. The following steps only have to act on the (usually very few) conflicting labels. There will be no additional cost if no labels are conflicting.

@Transwert This issue is assigned to you. Do you still plan to work on this?

@roidelapluie actually i haven't been able to think about the proper algorithm for the given issue, till @beorn7 stated it. And i was going through it, and let me continue working upon this or might need your help in this regard, i will let you know for sure : )

@Transwert we haven't heard back from you so I remove you as the assignee. But feel free to chime in again.

Can I pick up this issue?

Yes, I'll assign it to you.

Is anyone working on this or is it ok for @StephenWakely and me to take a look?

Yes, thanks!

Looks good at a first glance. I will have a closer look ASAP (hopefully tomorrow) to doublecheck that the expected parts are actually expected, and if I can find more interesting edge cases to test.
The test cases are easy to extend and (if needed) to fix, so I guess you could already start coding, if you like.


Example for UDP broadcast receive (IDFGH-5579)

I have scrambled the internet for UDP broadcast examples and I have this code for now and it's not working.
Any suggestions?

static void udp_client_task(void *pvParameters)
{
    char rx_buffer[128];

    while (1) {
        struct sockaddr_in dest_addr;
        dest_addr.sin_addr.s_addr = INADDR_BROADCAST;
        dest_addr.sin_family = AF_INET;
        dest_addr.sin_port = htons(3333);
        int addr_family = AF_INET;
        int ip_protocol = IPPROTO_UDP;

        int sock = socket(addr_family, SOCK_DGRAM, ip_protocol);
        if (sock < 0) {
            ESP_LOGE(TAG, "Unable to create socket: errno %d", errno);
            break;
        }
        //ESP_LOGI(TAG, "Socket created");

        int err = bind(sock, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
        if (err < 0) {
            ESP_LOGE(TAG, "Socket unable to bind: err %d", err);
        }
        int bc = 1;
        if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &bc, sizeof(bc)) < 0) {
            ESP_LOGE(TAG, "Failed to set sock options: errno %d", errno);
            closesocket(sock);
            break;
        }

        while (1) {

            // int err = sendto(sock, "test", strlen("test"), 0, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
            // if (err < 0) {
            //     ESP_LOGE(TAG, "Error occurred during sending: errno %d", errno);
            //     break;
            // }
            // ESP_LOGI(TAG, "Message sent");

            struct sockaddr_storage source_addr; // Large enough for both IPv4 or IPv6
            socklen_t socklen = sizeof(source_addr);
            int len = recvfrom(sock, rx_buffer, sizeof(rx_buffer) - 1, 0, (struct sockaddr *)&source_addr, &socklen);

            // Error occurred during receiving
            if (len < 0) {
                ESP_LOGE(TAG, "recvfrom failed: errno %d", errno);
                break;
            }
            // Data received
            else {
                rx_buffer[len] = 0; // Null-terminate whatever we received and treat like a string
                ESP_LOGI(TAG, "Received %d bytes", len);
                ESP_LOGI(TAG, "%s", rx_buffer);
                if (strncmp(rx_buffer, "OK: ", 4) == 0) {
                    ESP_LOGI(TAG, "Received expected message, reconnecting");
                    break;
                }
            }

            vTaskDelay(1000 / portTICK_PERIOD_MS);
        }

        if (sock != -1) {
            ESP_LOGE(TAG, "Shutting down socket and restarting...");
            shutdown(sock, 0);
            close(sock);
        }
    }
    vTaskDelete(NULL);
}

Hello @silardg
from my understanding there is nothing special in the receiver part to be able to receive broadcast packets.
I am running the UDP Server example.
It reacts on UDP packets sent to its IP address (unicast) or to the broadcast address, e.g. last octet 255 or even when I send the packets to <IP_ADDRESS>.
Thanks
Felix

@silardg I think it is incorrect to bind address to INADDR_BROADCAST(dest_addr.sin_addr.s_addr = INADDR_BROADCAST ). The bind operation is to bind socket to local address and port, which is your output or input local interface. You can use dest_addr.sin_addr.s_addr = htonl(INADDR_ANY) and try.

@silardg I think it is incorrect to bind address to INADDR_BROADCAST(dest_addr.sin_addr.s_addr = INADDR_BROADCAST ). The bind operation is to bind socket to local address and port, which is your output or input local interface. You can use dest_addr.sin_addr.s_addr = htonl(INADDR_ANY) or last octet 255 and try.

Thanks guys for the recommendation. My issue was that I had multiple routers and mikrotiks connected and I guess it didn't have a connection, even when I was connected to the same network as my esp32.
Closing ☺😁


Feature/Add canada

Adds Canadian postalCodes as a dataSource, and allows optional Canadian lookup.

Nice work @hotdang-ca :) Thanks!
I will publish a release by tonight.


Update with a better react component example

The component is always wrapped in two parenteses and
this shows a more real example on how esformatter will format things.

@kevinsimper Thank you.


fix: links for nfts are not working

Summary
Links for nfts are not working
How to test

Go to http://localhost:8080/#/sep:0xb58B05A1c8263441Bd74454544fD66CE25D300AD/treasury/
Go to nfts tab
Click on any NFT

We should enforce a width and height for NFT images

Fixed width and title is centered

Looks like this now:

Maybe try using the same method as explore page ?

Maybe try using the same method as explore page ?

Now using similar approach than explore page, but I had to create a new screen at 320px to show 2 cols on mobile and 1 after that

Not a fan of these big gap between columns


The specified device interface or feature level is not supported on this system.

I can't run second tutorial with that problem.
DxDiag.txt

Your GPU doesn't support DXR. You can only use the fallback layer which these tutorials do not support

Ah okay, sry.
Can you add this point to requirements in README.md?
Thanks :)

I have a GV100 and the same message. Should I get specific driver version ? I'm currently running 391.89.

@Mayhem50 391.89 doesn't support DXR. Please get the latest driver (I'm using 398.82)


Fixed issue with display month

Display month was not updated correctly because it tries to get the month of the first day of the week. If this day falls in the previous or next month, this can cause problems

This was the proper fix, but other updates we made led to many merge conflicts, so it was easier just to rewrite your changes. Thanks for pointing it out, and apologies for taking to loong to get around to this.


Lyrics for Instrumental Tracks

Hello! Loving this project.
One small suggestion I'd make is instead of returning nothing when a track is instrumental, returning some kind of indicator, even what Genius sends ("This song is an instrumental").
I've included an example of such a track here: https://genius.com/Julianna-barwick-adventurer-of-the-family-annotated
Thank you!

Hi Dan!
That is a great idea! At the moment I'm super busy while moving to another home.
I'll try to get back on this as soon as I'm settled.
In the meantime, feel free to give it a try and send me a PR.
Cheers,
Fede.

Hi Dan!
Sorry for the super late response for this. I'm still super busy right now, but I'll happily accept a PR for this.
Cheers,
Fede.


#5303 Unable to change edited menu in Navigation

Issue occurs when leaveConfirmation message contains a single quote.

Duplicates of #4963 #5269


[Bug] [API] After the workflow definition is deleted, the task definition cannot be edited

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
After the workflow definition is deleted, the task definition cannot be edited.
save fail

What you expected to happen
After the workflow definition is deleted, the task definition can be edited.
How to reproduce
1.create workflow
2.run workflow
3.delete workflow
4.look up task defination
6.edit workflow
Anything else
No response
Version
dev
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Please confirm if this issue exists in 31x and 30x.

in 31x


Problem with location with minus

Expected Behavior
Should work with location = "37.8059,-122.4289" for example
Actual Behavior
Shows errors:
Location Found: 37.8059,-122.4289 [13:15:39] [x] The location given using -l could not be parsed. Checking for a cached location. [13:15:39] [x] Parsing cached location... No cached Location. Please specify initial location.
Steps to Reproduce
Set up a normal location: "37.8059,122.4289"
It works.
Set up an inferior to zero location (US etc...): "37.8059,-122.4289"
It does not work
Other Information
OS: MAC OS X 10.11.6
Git Commit: 3364aa39d50dbc7e34541007e66ed67ab4071c35
Thank you in advance :)

This is a problem caused by an update in the pgoapi from tejado. It can easily be fixed by pinning the pgoapi pip to the "v1.1.0" tag. Change the first line in the requirements.txt in this way:
-e<EMAIL_ADDRESS>and update your pip with
pip install -r requirements.txt

Thanks @jovobe
Unfortunately I got the following error after modification of the requirements.txt:
Uninstalling six-1.4.1: Exception: Traceback (most recent call last):   File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 215, in main     status = self.run(options, args)   File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 317, in run     prefix=options.prefix_path,   File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 736, in install     requirement.uninstall(auto_confirm=True)   File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 742, in uninstall     paths_to_remove.remove(auto_confirm)   File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove     renames(path, new_path)   File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 267, in renames     shutil.move(old, new)   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move     copy2(src, real_dst)   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2     copystat(src, dst)   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat     os.chflags(dst, st.st_flags) OSError: [Errno 1] Operation not permitted: '/tmp/pip-fRJQCR-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-inf

Actually running pip install with the flag --ignore-installed six fixed my problem.
Just in case for others.

Commit has been reverted, please repull. #1065


[Swift 5.1] Enable Module Stability

https://swift.org/blog/swift-5-1-released/#module-stability
Closes #277.

I'll go ahead.


Make All InterSystems employees able to post "On behalf of Company"

Now we need to manage this - 1000+ employees?

не актуальная задача


task_name

In the args dictionary we have this entry:  'task_name': 'binary',.
Later it is used in here:
task = args['task_name']
processor = processors[task]()

I have tried to change this name (i.e. yelp) but it gives me an error (not too much info in the error, it only shows the name of the task I wrote). With binary works well. Is it the name for the task (i.e. a description) or maybe the type of text classification task?

It's basically the name of the task you are doing that is used to get the following information.
processors = {
    "binary": BinaryProcessor
}

output_modes = {
    "binary": "classification"
}

These are defined in utils.py. It's only useful when you want to reuse the code for multiple tasks, for example by writing your own DataProcessor. But yes, it's too cryptic. The error message should be clearer at the very least.

Ok, it's clear. Thanks.


Add support to pass hash method as an argument in code

Right now the pkce will be generated using SHA256, add option to pass the hash method name as an argument.

Hi @pareek-narendra, Can I work on the same?

@ashish8947 Great, assigning to you.

I have raised a pr #11 please have a look


Incorrect python3 dependency during brew install --HEAD youtube-dl

Checklist

[x] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2021.12.17
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log

$ brew install --HEAD youtube-dl
==> Fetching youtube-dl
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/8f2197797e3e31050a15cd675af0f9fdb55b4a26/Formula/
Already downloaded: /Users/zwimer/Library/Caches/Homebrew/downloads/db2a58cfb5648dd8d0cde7aa9e5c816b37b55ce7a5a55d9fe959ade71f41a215--youtube-dl.rb
==> Cloning https://github.com/ytdl-org/youtube-dl.git
Updating /Users/zwimer/Library/Caches/Homebrew/youtube-dl--git
==> Checking out branch master
Already on 'master'
Your branch is up to date with 'origin/master'.
HEAD is now at aaed4884e fix(youtube): update extractor handling consent
==> make PREFIX=/opt/homebrew/Cellar/youtube-dl/HEAD-aaed488 MANDIR=/opt/homebrew/Cellar/youtube-dl/HEAD-aaed488/share/man
Last 15 lines from /Users/zwimer/Library/Logs/Homebrew/youtube-dl/01.make:
	done
make: *** [youtube-dl.bash-completion] Error 1
make: *** Waiting for unfinished jobs....
make: *** [youtube-dl.zsh] Error 1
/bin/sh<EMAIL_ADDRESS>No such file or directory
/bin/sh<EMAIL_ADDRESS>No such file or directory
make: *** [README.md] Error 127
touch -t<PHONE_NUMBER>01 zip/youtube_dl/*.py zip/youtube_dl/*/*.py
mv zip/youtube_dl/__main__.py zip/
cd zip ; zip -q ../youtube-dl youtube_dl/*.py youtube_dl/*/*.py __main__.py
rm -rf zip
echo<EMAIL_ADDRESS>> youtube-dl
cat youtube-dl.zip >> youtube-dl
rm youtube-dl.zip
chmod a+x youtube-dl

READ THIS: https://docs.brew.sh/Troubleshooting

youtube-dl's formula was built from an unstable upstream --HEAD.
This build failure is expected behaviour.
Do not create issues about this on Homebrew's GitHub repositories.
Any opened issues will be immediately closed without response.
Do not ask for help from Homebrew or its maintainers on social media.
You may ask for help in Homebrew's discussions but are unlikely to receive a response.
Try to figure out the problem yourself and submit a fix as a pull request.
We will review it but may or may not accept it.

Description
The install is looking for<EMAIL_ADDRESS>but<EMAIL_ADDRESS>does not provide this file. Instead it probably should use<EMAIL_ADDRESS>To verify this: I've tested symlinking<EMAIL_ADDRESS>-><EMAIL_ADDRESS>and then the install and tool both work.

The "formula" isn't maintained here but @ Homebrew. The problem seems to be with the Python installation. What happens if you run which python3?

I get /opt/homebrew/bin/python3 (though mac also has a builtin python3, homebrew's is first in my PATH). That's a symlink to homebrew's python3.11 install, though since this requires 3.12 by name I assume it should use that instead. If this is a PR I should make to homebrew-core (presumably here https://github.com/Homebrew/homebrew-core/blob/adb653972409c4cfc269cd9ae0d92e27cc0c670b/Formula/y/youtube-dl.rb#L30 ) please let me know and feel free to close this! I'll open an issue there instead. Thanks!

Also, if it matters, this is --HEAD, it is not just normal brew install; this should grab from master I believe. I'm making the issue here first since 1) I'm not sure if this is a ytdl or a brew issue and 2) brew's install head said Do not create issues about this on Homebrew's GitHub repositories. Any opened issues will be immediately closed without response. So I'm trying here first.

Presumably the Homebrew formula "sees" your Python 3.12, prefers it as the installation target, as the most recent version, and expects there to be a python3 in the same directory.
You could try either removing the 3.12, or actually creating a link<EMAIL_ADDRESS>--><EMAIL_ADDRESS>or reinstalling 3.12.
In any event this a problem of too many and various Pythons and nothing to do with yt-dl itself, or with installing from its HEAD. If the suggestions above don't help, you could ask Homebrew why the formula is getting confused: maybe if it expects to find a python3 it should explicitly check for one first or (assuming 3.12 is also brewed) the Python 3.12 formula (supported, I expect?) is defective in failing to create the expected link.

As this isn't a bug here, I'll close the issue, but feel free to post the result of the Homebrew issue.


Renaming Local to Ravenmind

Since local is being renamed to ravenmind, should OpPushLocal and OpPeekLocal be renamed to OpPushRavenmind and OpPeekRavenmind?

A lot of the internal and external names are different... and I already fixed this in 1.0!
Given it's not something that faces the player I'm going to close this. Good catch, though.


Payments in foreign currencies are not shown correctly

Bug report
Payments in foreign currencies are not shown correctly
Here the pin transactions are shown correctly in euro's in the app:

But in bunqDesktop they are shown in the original currency (Hungarian Florints), but with the euro sign in front:

It also does mess up the graphs on the stats page.

Which version are you testing on? All those issues should already be fixed on the development build 👍

I'm running 8.11, but couldn't find a related issue.

No problem than, some of these minor issues get fixed without an official GitHub issue.


Created sealights integration for CF dotnet-core-buildpack

This library is used in the fork of the dotnet-core-buildpack
integration tests and the hook itself are in the fork
here is the hook example:
package hooks

import (
	"github.com/Sealights/libbuildpack-sealights"
	"github.com/cloudfoundry/libbuildpack"
)

func init() {
	libbuildpack.AddHook(sealights.NewHook())
}

Where is the integration test?


Rendering artifact with scaled textures

Versions

Python: 3.6.1
OS: Tested on Ubuntu 16.04 and Win7pro
Kivy: 1.10
Kivy installation method: pip

Description
A rendering artifact appears when image textures are scaled. This test case is two 100x100 PNGs, when overlaid they align to fill the 100x100 pixels exactly (top/bottom half transparent). This works as expected when not scaling, but with scaling there is an unexpected artifact.

Rendering artifact when scaled down
Rendering artifact when scaled up
On yellow background to demonstrate that it's not transparency

Code and Logs
The below examples reproduce the issue on my systems using different approaches.
Example 1
from kivy.base import runTouchApp
from kivy.lang import Builder

runTouchApp(Builder.load_string('''
FloatLayout:
    AsyncImage:
        source: 'http://i.imgur.com/KKva3Os.png'
        allow_stretch: True
    AsyncImage:
        source: 'http://i.imgur.com/ILBfKkJ.png'
        allow_stretch: True
'''))

Example 2
This is correct on load, not when scaled
from kivy.base import runTouchApp
from kivy.lang import Builder

runTouchApp(Builder.load_string('''
Scatter:
    size_hint: None, None
    FloatLayout:
        AsyncImage:
            source: 'http://i.imgur.com/KKva3Os.png'
        AsyncImage:
            source: 'http://i.imgur.com/ILBfKkJ.png'
'''))

Example 3
This is correct on load, not when scaled
from kivy.app import App
from kivy.lang import Builder
from kivy.loader import Loader

KV = '''
Scatter:
    tx1: None
    tx2: None
    size_hint: None, None
    canvas:
        Rectangle:
            texture: self.tx1
            size: self.size
        Rectangle:
            texture: self.tx2
            size: self.size
'''

class TestApp(App):
    def build(self):
        def handler1(proxy):
            setattr(self.root, 'tx1', proxy.image.texture)
        def handler2(proxy):
            setattr(self.root, 'tx2', proxy.image.texture)

        img1 = Loader.image('http://i.imgur.com/KKva3Os.png')
        img1.bind(on_load=handler1)

        img2 = Loader.image('http://i.imgur.com/ILBfKkJ.png')
        img2.bind(on_load=handler2)

        return Builder.load_string(KV)

TestApp().run()

I think it is the same kind of issue that beginner have when scaling down/up image with opacity. The opacity layer is also stretched, and leads to issue with transparency;
One way to test is in your case, both of your picture should have RGB full red, and A only partially filled with white, the rest with black. Then when OpenGL will stretch the image, the opacity layer (A) will be blended (from black to white in the middle) and the base color will be the red; otherwise it will be black if you don't have any information, that's where the glitch happen.

Weird. The blending always happen with black. I changed both of your image to have one image with full blue, and only half transparent on the bottom, and the other with red and half transparent to the top. I double-checked that the PNG itself does have correctly the blue and red on the transparent part. But it doesn't solve the issue O_o. Also checked with SDL2 or ImageIO (osx) provider.
Just one half image give this when scaled:

And for informations, this is the sources images:

And source code:
from kivy.base import runTouchApp
from kivy.lang import Builder

runTouchApp(Builder.load_string('''

FloatLayout:
    canvas.before:
        Color:
            rgba: 0, 1, 0, 1
        Rectangle:
            pos: 0, 0
            size: self.size

    Scatter:
        size_hint: None, None
        canvas.before:
            Color:
                rgba: 0, 1, 0, 1
            Rectangle:
                pos: 0, 0
                size: self.size
        FloatLayout:
            Image:
                source: '/Users/tito/Downloads/KKva3Os.png'
            #Image:
            #    source: '/Users/tito/Downloads/ILBfKkJ.png'
'''))

I don't have much time to try solving this, but maybe ask on any OpenGL forum, they may help. Also you can use a tool like apitrace to see the order of GL operations.

Thanks for testing - I'm just reporting, no rush in my end. Seems like this is because Kivy uses post-multiplied alpha. Changing to pre-multiplied reduces the artifact (mine, yours w/premultiplication of pngs), but of course it breaks everything else. Unfortunately I don't know if this this is even the expected result -- is it possible that a separate issue is preventing it from being completely sharp?
diff --git a/kivy/graphics/instructions.pyx b/kivy/graphics/instructions.pyx
index 0e1c77c6..9549641b 100644
--- a/kivy/graphics/instructions.pyx
+++ b/kivy/graphics/instructions.pyx
@@ -33,8 +33,9 @@ cdef void reset_gl_context():
     cgl.glEnable(GL_BLEND)
     cgl.glDisable(GL_DEPTH_TEST)
     cgl.glEnable(GL_STENCIL_TEST)
-    cgl.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
-    cgl.glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE)
+    cgl.glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
+    cgl.glBlendFuncSeparate(GL_ONE, GL_ONE_MINUS_SRC_ALPHA,
+                            GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
     cgl.glActiveTexture(GL_TEXTURE0)
     cgl.glPixelStorei(GL_UNPACK_ALIGNMENT, 1)

It may be possible to add env/config option so advanced users can bake their assets accordingly... but it needs more work than an "if" here.
Eric Haines has a good article on the subject: http://www.realtimerendering.com/blog/gpus-prefer-premultiplication/


passing a function with keyword only arguments and no initial guess to curve_fit

from scipy.optimize import curve_fit

def func(x, a, *, b=1):
    return a * x + b

print(curve_fit(func, [0, 1, 2], [2, 3, 4]))

This fails because curve_fit tries to determine the number of arguments using inspect.getargspec (ValueError: Function has keyword-only arguments or annotations, use getfullargspec() API which can support them).  I'd suggest either defaulting to optimizing over all non-keyword-only arguments (which keeps compatibility with the case of "standard" optional arguments, which are also optimized over), or throwing a more explicit error (because there isn't much to do anyways if the function has a keyword-only argument without a default value).

With gh-5248, the error is more explicit (at least on python 3.3+).
TypeError: f() missing 1 required keyword-only argument: 'b'.
Note that keyword-only arguments do not work with default values either:
>>> def f(x, a, *, b):
...    return a*x + b
>>> curve_fit(f, [0, 1, 2], [2, 3, 4], p0=[1, 2])
Traceback (most recent call last):
...
     return function(xdata, *params) - ydata
TypeError: f() takes 2 positional arguments but 3 were given

It is reasonable that keyword-only arguments do not work, because they are technically unordered (e.g. def f(*, a, b): and def f(*, b, a): have the same signature).

OK, let's consider this an enhancement request "teach curve_fit how to deal with keyword-only arguments". For this, we'll need to:

overload p0 to accept either an array_like or a mapping of {var name: initial value}.
detect keyword-only args in the signature and generate initial values as a dict to be unpacked.
something is to be done with return values in presence of unordered keywords. popt  can be OK (return a dict or OrderedDict), pcov might be trickier.

An alternative is, of course, declare that we don't want to mess with any of that and document that keyword-only args are not supported.

The original code snippet now runs; it doesn't fit b but that seems expected.
I believe this can be closed.


Command.CommandText doesn't display parameters

Command.CommandText doesn't display parameters... this leaves the extension in an awkward position because we pass around PSCommand's everywhere and there doesn't seem to be a friendly way of printing those out short of iterating over all the parameters ourselves.
I would have expected PowerShell to take care of this by default.
Steps to reproduce
[PowerShell]::Create().AddCommand("Get-Foo").AddParameter("WillThisShowUp", "Nope").Commands.Commands[0].CommandText

Expected behavior
Get-Foo -WillThisShowUp Nope

Actual behavior
Get-Foo

Environment data

Name                           Value
----                           -----
PSVersion                      7.1.0-daily.20200418
PSEdition                      Core
GitCommitId                    7.1.0-daily.20200418
OS                             Darwin 19.4.0 Darwin Kernel Version 19.4.0: Wed Mar  4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

@TylerLeonhardt PSCommand is just a property bags of strings, parameters etc. So it just contains the name of the command which won't be resolved until the PowerShell object is invoked. If you actually want any information about a command you really, really should be using CommandInfo objects.
But, it would be nice if the ToString() on PSCommand returned what you want. It would be even nicer if the PowerShell ToString() returned a complete syntactically valid pipeline string to support code generation. This would make it easier for app developers to implement "Show Me" functionality.

Kinda complicated to do.  For instance, what would it print here:
var obj = new object();
ps.AddCommand('Save-Object').AddArgument(obj);

Yeah that's tricky @SeeminglyScience. I would guess just calling ToString() on each parameter value / argument.

What's the motivation if it can't accurately represent the command though? Just a visual aid?

If the aim is instead to just get a "good enough" ToString to make it easy to see what the PSCommand currently holds then 👍 👍 from me

Yeah this is the idea.

In the case perhaps we need to have more descriptive name instead of ToString().

the CommandText property name is slightly misleading. It really should have been called "CommandName" (this is clear from the comment in the code). Rather than changing this property name, a new property could be created. However, this can also be done with an ETS extension external to the engine.


[Request] inversion for Stablediffusion and Controlnet

Thank you for sharing this interesting project.
I've explored the code and tried the demo. I noticed that the inversion.py, which generates images based on reference images, only provides the part related to StableDiffusionXLPipeline. Could you also provide the part corresponding to the StableDiffusion pipeline and the Controlnet models?

It works.
Just use the below:
`from diffusers import StableDiffusionXLControlNetPipeline, DDIMScheduler
import torch
import mediapy
import sa_handler
import math
scheduler = DDIMScheduler(
beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear",
clip_sample=False, set_alpha_to_one=False)
from diffusers import StableDiffusionXLControlNetImg2ImgPipeline,ControlNetModel
canny_controlnet = ControlNetModel.from_pretrained(
"diffusers/controlnet-canny-sdxl-1.0",
variant="fp16",
use_safetensors=True,
torch_dtype=torch.float16,
).to("cuda")
pipeline = StableDiffusionXLControlNetPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
controlnet=canny_controlnet,
scheduler=scheduler,
variant="fp16",
use_safetensors=True,
torch_dtype=torch.float16,
).to("cuda")`
And for inference:
images_a = pipeline(prompts, latents=latents,                     image=canny_image,                     controlnet_conditioning_scale=0.1,                     callback_on_step_end=inversion_callback,                     num_inference_steps=num_inference_steps, guidance_scale=8).images

I would also like to know how to inversion reference images using controlnet, can you provide more detailed code? Thanks!

I would also like to know how to inversion reference images using controlnet, can you provide more detailed code? Thanks!

Refer to this: Control-Style-Aligned-Generation

I would also like to know how to inversion reference images using controlnet, can you provide more detailed code? Thanks!

Refer to this : Control-Style-Aligned-Generation


Cannot find v_HandStandPushups_g08_c01.hdf5

Hi,
Thank you for sharing such good codes and work.
When I tried to generate the json files, ../data/UCF101/UCF101_hdf5/HandstandPushups/v_HandStandPushups_g08_c01.hdf5 to ../data/UCF101/UCF101_hdf5/HandstandPushups/v_HandStandPushups_g07_c04.hdf5. It returns Cannot find the file...
I tried to regenerate the hdf5 of HandstandPushups, the problem is still there.
Really appreciate if you can offer some help!
Best,
Hu

Firstly, download the UCF101 video datasets and run the generate_video_hdf5.py. When you check the "datasets/UCF101/hdf5data" that svaed hdf5 file, you can find that v_HandStandPushups_g07_c04.hdf5 is different from v_HandstandPushups_g07_c04.hdf5, you just rename v_HandStand* as  v_Handstand*.

I think it has been solved, thank you! It is caused by copying wrong files...


createDistributable is missing dependencies

Getting following error in distributable
Exception in thread "main" java.lang.NoClassDefFoundError: java/net/http/HttpClient
	at com.kotlang.util.VersionVerificationUtil.<init>(VersionVerificationUtil.kt:12)
	at com.kotlang.MainKt.<clinit>(main.kt:12)
Caused by: java.lang.ClassNotFoundException: java.net.http.HttpClient
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 2 more
Failed to launch JVM

However, uberjar is working.
Platform: Ubuntu
Java version: 15
https://github.com/SaiNageswarS/Omnishell/blob/6d603fbf0311a706c9d2e18526d6d24a01ef367c/src/main/kotlin/com/kotlang/util/VersionVerificationUtil.kt#L12

Adding modules in nativeDistributions helped.
Ex:
nativeDistributions {
            modules("java.net.http")
            targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
            packageName = "OmniShell"
        }

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Doing a force:source:pull return "No results found" when a template had been exported

Summary
Doing a force:source:pull return "No results found" when a template had been exported.
We ship a template to create a community in our package, when the template needs to be changed we just make changes in the template, export it, and then sfdx force:source:pull to add the files affected by the change in our package.
But after changing the template sfdx force:source:pull returns "No results found"
Steps To Reproduce:

A new scratch is created, push my code ok, next I create a Community and made a pull. I get:

=== Pulled Source No results found
(Which is the expected result)

I create a tab, try pull again, it works:
=== Pulled Source STATE    FULL NAME             TYPE      PROJECT PATH ───────  ────────────────────  ────────  ─────────────────────────────────────────────────────────────────────── Add      CommunityApi__c.All1  ListView  force-app/base/objects/CommunityApi__c/listViews/All1.listView-meta.xml Changed  Admin                 Profile   force-app/components/default/profiles/Admin.profile-meta.xml

Create a community in the scratch org, export the template

Run sfdx force:source:pull , got "No results found" when it should retrieve the exported template

Expected result
Exported template files should be retrieve
Actual result
=== Pulled Source No results found
Additional information
Scratch org dev file:
{     "orgName": "MuleSoft Scratch",     "edition": "Developer",     "hasSampleData": "true",     "country" : "US",     "features": ["Communities", "ServiceCloud", "Sites", "PlatformCache", "Knowledge", "LightningServiceConsole"],     "settings": {         "knowledgeSettings": {             "enableKnowledge": true,             "enableLightningKnowledge": true         },         "lightningExperienceSettings": {             "enableS1DesktopEnabled": true         },         "communitiesSettings": {             "enableNetworksEnabled": true,             "enableOotbProfExtUserOpsEnable": true         },         "apexSettings": {             "enableCompileOnDeploy" : true         }     } }
Running sfdx force:source:retrieve  doesn't get the community metadata either.
I manageed to do a force:pull of just one file. I did the following:

Downgrade sfdx-cli to 7.99.0
Added the name file I wanted to be downloaded to : my-sfdx-project/.sfdx/sourcePathInfos.json
The metadata files of the community created acctually were in my-sfdx-project/.sfdx/maxRevision.json  , I changed lastRetrievedFromServer for the file to 0
Did a force:pull and the file was downloaded

The metadata files of the community created acctually were in my-sfdx-project/.sfdx/maxRevision.json

This was weird for me, it seems sfdx get notices about the new metadata files, but for some reason the lastRetrievedFromServer  and  serverRevisionCounter where the same number, which means source:pull won't fetch the last changes
On sfdx log file I could see:
{"name":"sfdx", "log":"RemoteSourceTrackingService","level":40,"msg":"Polling for SourceMembers timed out after 26s and 12 attempts","time":"2021-06-15T16:19:01.167Z","v":0}
It seems like Polling SourceMembers timed out.
SFDX CLI Version: sfdx-cli/7.106.3 darwin-x64 node-v15.12.0
OS and version: OSX Catalina 10.15.7

Hi @pacafuentes it sounds like you discovered a timeout... there's the environment variable SFDX_SOURCE_MEMBER_POLLING_TIMEOUT  which you can set to avoid this error. You can also run the force:source:tracking:* commands to help recover your local source tracking when you know what you should see.

Hi @WillieRuemmele I set the variable SFDX_SOURCE_MEMBER_POLLING_TIMEOUT  to 10 minutes and got the same result

ok, just to verify - 10 mins = 600s. So SFDX_SOURCE_MEMBER_POLLING_TIMEOUT=600
Have you tried to force:source:retrieve the metadata? There's a new beta source plugin that fixes a lot of these metadata related issues.

Hi! Sorry for the delay.
I used SFDX_SOURCE_MEMBER_POLLING_TIMEOUT=600  and SFDX_DISABLE_SOURCE_MEMBER_POLLING with the same result.
I tried force:source:retrieve and nothing happened.

Same behaviour when a Custom Object is created in the org, when doing force:source:pull the metadata of the Custom Object isn't pull

Same behaviour when a Custom Object is created in the scratch org, when using force:source:pull the metadata of the Custom Object isn't pull

Hi @pacafuentes @jrod9904 sorry to leave you radio silent for 2+ years 😦 ... are you still experiencing these source tracking issues on the latest CLI versions? Have you found any workarounds?


View data does not change on navigation

Excellent package team🥳. I have loved using Inertia and I now use it in all my projects.
I have an issue with view data.
Per the documentation I have the following code in 2 of my routes
public function index()
  {
    return Inertia::render('BasicSite,HomePage')->withViewData([
      'title' => 'Home page title',
      'description' => 'Home page description.',
      'abstract' => 'Home page abstract.',
      'ogDescription' => 'Some description.',
      'twitterDescription' => 'Some description'
    ]);
  }

public function showPrivacyPage()
  {
    return Inertia::render('BasicSite,PrivacyPage')->withViewData([
      'title' => 'Privacy page title',
      'description' => 'Know our privacy policy regarding how we use the information you provide to us.',
      'ogDescription' => 'Know our privacy policy regarding how we use the information you provide to us',
    ]);
  }

In the blade file I have the following
<title>{{ $title ?? config('app.name')}}</title>

However when I navigate between pages, the title and other data does not dynamically change. When I do a full page reload however, it does.
Am I missing something?
Thank you

Hi,
On an initial page load, Inertia serves you the entire HTML page, including amongst others the head and body tags.
When Inertia makes an XHR visit (using the <inertia-link> component, for example), the server detects that it's an Inertia visit, and instead of returning a full HTML response, it returns a JSON response with the JavaScript page component name and data (props). Inertia then dynamically swaps out the previous page component with the new page component, and updates the history state.
Because Inertia (after the initial page load) only controls what's in the Inertia-controlled portion of the body, it doesn't update the title tag, and it stays as it was before like you're describing. As such, we'll need to add some custom javascript logic to update the page details (that are outside of Inertia's "control").
One way to do this (assuming you're using VueJS), is to add a piece of custom logic to one of the lifecycle hooks of your Page Component:
mounted() {
    document.title = this.title;
}

Another way (that I personally prefer), is to use persistent layouts, and to add a watcher on the title prop instead, so that it's automatically updated as the page itself changes without me having to repeat the above logic in every component:
watch: {
    title(newVal) {
        document.title = this.title;
    }
}

Alternatively, you can install the vue-meta package, which will allow you to use 'metadata' on your page components to achieve the same purpose in an (arguably) cleaner way.
Hope it helps! Let me know if you have any questions.

@claudiodekker Fantastic answer, thanks for helping out here. 👍


Enabling auth succeeds without pachd being able to access the outside world, effectively locking cluster

Enabling auth requires a GitHub user's token to use as the first admin, but doesn't seem to actually verify that token? In my test cluster, pachd currently can't seem to talk to the outside world. Despite this, I was able to activate auth using my GH token, but now, because it can't verify with github, I'm unable to log in (so effectively locked out of my cluster).

This is per https://github.com/pachyderm/pachyderm/pull/2759 (a feature that IIRC we wanted for dash testing? Though if it's not helping us test the dash we can/should do something else)

This was fixed by e7616feee3d13a222274ef440a62b06626ad1ded. pachctl auth activate now attempts to convert GitHub tokens to a username before putting auth in an intermediate state. Now, Pachctl auth should fail fast instead of getting stuck


Very cool

This is a really cute hack, but we're not using it anywhere in kubernetes
and it is not kubernetes specific.  Should it be hosted in this repo?
On Thu, Jan 29, 2015 at 2:33 PM, Clayton Coleman<EMAIL_ADDRESS>wrote:

Very cool
--
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/pull/3956#issuecomment-72118077
.

@thockin @dchen1107 and @bgrant0607 were thinking it might be useful to run etcd in a pod.

Can we sit on this PR until we have a clearer picture of what we want to do
with etcd?  It's a cute idea..
On Thu, Jan 29, 2015 at 2:49 PM, Johan Euphrosine<EMAIL_ADDRESS>wrote:

@thockin https://github.com/thockin @dchen1107
https://github.com/dchen1107 and @bgrant0607
https://github.com/bgrant0607 were thinking it might be useful to run
etcd in a pod.
--
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/pull/3956#issuecomment-72120412
.

@thockin I suggested we host it, for lack of a better place. It may be useful for Dockerizing etcd and/or kubernetes components. We can always remove it later if it turns out not to be useful.

Tested with etcd:
proppy@noir:~/src/github.com/GoogleCloudPlatform/kubernetes/contrib/go2docker$ go2docker github.com/coreos/etcd | docker load
proppy@noir:~/src/github.com/GoogleCloudPlatform/kubernetes/contrib/go2docker$ docker images | grep go2docker/etcd
go2docker/etcd                                    latest              803f86b03990        6 seconds ago       9.629 MB
proppy@noir:~/src/github.com/GoogleCloudPlatform/kubernetes/contrib/go2docker$ docker run go2docker/etcd
2015/01/30 08:18:14 no data-dir provided, using default data-dir ./default.etcd
2015/01/30 08:18:14 etcd: listening for peers on http://localhost:2380
2015/01/30 08:18:14 etcd: listening for peers on http://localhost:7001
2015/01/30 08:18:14 etcd: listening for client requests on http://localhost:2379
2015/01/30 08:18:14 etcd: listening for client requests on http://localhost:4001

I wonder if https://github.com/docker/distribution could also be a home for it, along with the registry client that @smarterclayton is working on.
A collection of standalone tools for working with docker images seems desirable for me, maybe we could incubate them inside c ontrib and externalize them if they prove generally useful.

We're going to try to use this to Dockerize etcd and possibly the master components.
cc @dchen1107 @ArtfulCoder

We planned to try go2docker to build our own etc_server image, and push to master node since the final size looks like smaller. But @thockin just mentioned that we could build image based on 0 byte docker image called scratch, which means we could have image same size as etcd binary itself.

@dchen1107: yes that's basically what go2docker is doing :)

Merging to make it easier to play with. We can always remove it later if we decide not to use it.


Updating the maven build to use npm 3 (and to check the version number).

:ok: 2f88b69089a508a4e6c4833987761c9a1600fff2 seems fine for me.  As a very minor point, if we are going to force ourselves to use npm 3 then why not always use npm latest, and check our version is 3+ so that we generate the flat file structure.

@simonarbuckle Thank you for your review.


ERROR: Job failed: execution took longer than 1h0m0s seconds

I got this error. Has anyone else had this issue too?
Executing "step_script" stage of the job script
Using docker image sha256:e96a212a8ca82ea842c95bd6f96e3fb3b03d1574275bf13de92170b4c8deb69c for python:3.8 with digest python@sha256:0bdd43369c583eb82a809fbe6908d6ec721b7a29f7d9dce427d70924baf0ab7b ...
$ cat >notion_export_gen.py <<EOL # collapsed multi-line command
$ git remote set-url origin<EMAIL_ADDRESS>$ git config --global user.email ${GITLAB_USER_EMAIL}
$ git config --global user.name ${GITLAB_USER_ID}
$ ./notion_export_gen.py && ./merge_gen.sh
Enqueued task 48b578ed-aec2-4c8b-a443-4b56d6f77737
Status: ?, pages exported: ?
Status: ?, pages exported: ?
Status: ?, pages exported: ?
Status: ?, pages exported: ?
ERROR: Job failed: execution took longer than 1h0m0s seconds

Sometimes the export is slow, sometimes it gets stuck on the Notion side. If it happens every time, you have a problem. If it's just once in a while, then you're fine. I increased the timeout I give GitHub so that it works more often, but that's a personal choice.


Use HTTPS (rather than SSH) in python buildinfo

@mesosphere-mergebot label Ready For Review

teamcity/dcos/build/dcos/windows is failing for other reasons; this PR helps get it along further than it was (this will enable successful building of all pkgpanda packages).

@mesosphere-mergebot bump-ee

teamcity/dcos/build/dcos/windows is passing now. 🎉

:wave: This PR has been inactive for 3 days. Please review the status checks to see what needs to be done to move it forward or change the label to Work in Progress. Thank you!

:wave: This PR has been inactive for 3 days. Please review the status checks to see what needs to be done to move it forward or change the label to Work in Progress. Thank you!


Property-based Testing?

For some exercises it makes perfect sense to also add some QuickCheck tests.
A good example would be simple-linked-list.
I am aware that this could be quite confusing for people who are unfamiliar with property-based testing.
And not all languages support it which might be a killer criterion in itself.
On the other hand the concept could be important enough to expose people to it?
I would like to hear your opinion about this.

I agree that they make sense in Haskell - we even have two exercises that use QuickCheck - but I never spent the time to get comfortable enough with it to add new properties. I guess it is time to stop postponing. 😄
In practice, using property-based testing would makes us diverge at least a little from x-common (adding new tests). I don't see any problem in following this route.
In the future, using exclusively property-based tests in some exercise could allow writing less prescriptive test suites, so I support the experiment.

Great.
I know Scala's ScalaCheck, but I wanted to get into QuickCheck anyways.
So I might just give it a try for simple-linked-list.

Which are those two exercises?

octal and trinary. Since I know them, they use QuickCheck.

So I might just give it a try for simple-linked-list.

It seems perfect to start with it!

Also don't forget the Diamond exercise, whose readme at https://github.com/exercism/x-common/blob/master/exercises/diamond/description.md has a list of properties that can be used to test. http://blog.ploeh.dk/2015/01/10/diamond-kata-with-fscheck/ has some ideas as well. https://github.com/exercism/x-common/pull/191#issuecomment-254589087 confirms that it would be good to try to test it with property-based tests.

We could also try to retrofit our Dominoes tests at https://github.com/exercism/xhaskell/blob/master/exercises/dominoes/test/Tests.hs#L28 to use QuickCheck?

I am sure there are more exercises suitable for property-based testing. My guess would be most of them - if you are just willing to invest enough inventiveness and imagination. :)
One has to be careful, though: Some properties might reveal too much about the solution. Just consider bob.

Since this was a question (should we have it) and the question was answered (affirmatively), we are done here, right?
Unless we want to be specific about which exercises it would be good to add QuickCheck to.

Since we don't have diamond, I suppose that suggestion from me doesn't apply. Unless someone adds it to this track.
Note that https://github.com/exercism/xhaskell/blob/master/exercises/crypto-square/test/Tests.hs also could be a candidate, given what happened in #259 and #391.

@rbasso is busy with other things at the moment. So we agreed to just merge #499, but not go any further for now.

Sorry for my absence, @abo64.
I'm trying to force myself to get used property-based tests, but I'm still bad at it and I usually forget about adding tests at all in my toy projects.
To force myself to use them, I even wrote a stack template with a fake test suite... just in case I find the opportunity to practice. 😄


TypeError When using Opera

this error is in the console:
Uncaught (in promise) TypeError: e.on is not a function in App.js
via @pauljickling

With stable version 2.0.0 of Web3Modal now released, we are officially dropping support for version 1.x
Due to this this issue/pr was marked for closing. It is highly recommended to upgrade as 2.x will be receiving further updates that will enable functionality for some of our newer sdks like auth and push as well as support for WalletConnect v2 (See this post about WalletConnect v1 being deprecated https://medium.com/walletconnect/walletconnect-v1-0-sunset-notice-and-migration-schedule-8af9d3720d2e)
If you need to continue using Web3Modal 1.x and require this feature/fix implemented, we suggest adding it via forking V1 branch.


Support API Token Authentication

We should even encourage it over username/password authentication.

@MatthewFlamm, you may be interested in tackling this!

@MatthewFlamm, you may be interested in tackling this!

Cool!  I will take a look.

Cool!  I will take a look.

Some thoughts here.  Currently the config flow creates config entries with data of host, password, username, and name.  At the absolute very least, we need to add an api_key.  I think it is ideal if we split the config flow into two steps.  The first asks which authentication method is to be used, the second collects the authentication info, i.e. either username/password or api_key.  In this case it is also natural to store the authentication_method in the config entry, which makes the setup easier later.  But it isn't required.
We should migrate all existing config entries to a version 2, with the additional item(s) in the config entry data.  I would feel more confident if we first added tests for the existing behavior, then added tests to make sure the migration works properly.  See #8 about tests.

Some thoughts here.  Currently the config flow creates config entries with data of host, password, username, and name.  At the absolute very least, we need to add an api_key.  I think it is ideal if we split the config flow into two steps.  The first asks which authentication method is to be used, the second collects the authentication info, i.e. either username/password or api_key.  In this case it is also natural to store the authentication_method in the config entry, which makes the setup easier later.  But it isn't required.
We should migrate all existing config entries to a version 2, with the additional item(s) in the config entry data.  I would feel more confident if we first added tests for the existing behavior, then added tests to make sure the migration works properly.  See #8 about tests.

This sounds like a great plan.  I don't want to toss username/password yet since this, in theory, still works with FreeNAS, which is still supported, but has no token auth.

This sounds like a great plan.  I don't want to toss username/password yet since this, in theory, still works with FreeNAS, which is still supported, but has no token auth.


Restic restore fails with killed message

Restoring a root backup snapshot to / fails with the message killed.
I've run restic stat to confirm that the snapshot is not larger than the available hard disk space.
Output of restic version
restic 0.14.0 compiled with go1.19.2 on linux/amd64
How did you run restic exactly?
sudo restic -vv -r /repo restore 826622 --target /

is it possible that you're trying to override some system-files that may cause the error?
youd could try to restore one path after another with the --path parameter
https://restic.readthedocs.io/en/latest/050_restore.html

@AlBundy33 Thanks, that may be it. It would be very helpful to have an error message, even with -vv there's none.
I'll have to checkout the - - path flag.
After mounting can I use rsync instead of cp?

@AlBundy33 Thanks, that may be it. It would be very helpful to have an error message, even with -vv there's none.
I'll have to checkout the - - path flag.
After mounting can I use rsync instead of cp?

is it possible that you're trying to override some system-files that may cause the error? you could try to restore one path after another with the --path parameter https://restic.readthedocs.io/en/latest/050_restore.html
or use the mount command and restore with cp - I would assume that you'll also get some kind of error.

I just read the doc you linked. Do you mean to say --include instead of --path? The former restores the specified path only where as I don't think the latter does.

is it possible that you're trying to override some system-files that may cause the error? you could try to restore one path after another with the --path parameter https://restic.readthedocs.io/en/latest/050_restore.html
or use the mount command and restore with cp - I would assume that you'll also get some kind of error.

I just read the doc you linked. Do you mean to say --include instead of --path? The former restores the specified path only where as I don't think the latter does.

you're right: --include instead of --path
I think the easiest way is to use mount with cp, rsync or any copy-tool you want

you're right: --include instead of --path
I think the easiest way is to use mount with cp, rsync or any copy-tool you want

"Killed" usually means the process took too much RAM and the kernel's OOM killer stepped in (check /proc/sys/vm/overcommit_memory, if that's not 2 then the OOM killer is on). Restic mount should take less memory than restic restore and you can use rsync or any other tool to copy out of the mount point.

Closing as there's not enough information to debug.


chore: fix the release error

Close #398
https://github.com/authzed/zed/actions/runs/9942983136/job/27465721921
Run goreleaser/goreleaser-action@v6
Warning: You are using 'latest' as default version. Will lock to '~> v2'.
Downloading https://github.com/goreleaser/goreleaser-pro/releases/download/v2.1.0-pro/goreleaser-pro_Darwin_all.tar.gz
Extracting GoReleaser
/usr/bin/tar xz -C /Users/runner/work/_temp/a6eaee15-e2ed-4efa-8513-20ad884515ab -f /Users/runner/work/_temp/5997958d-49af-44fc-a94c-5beea7f0be38
GoReleaser latest installed successfully
/Users/runner/hostedtoolcache/goreleaser-action/2.1.0-pro/arm64/goreleaser release --rm-dist
  ⨯ command failed                                   error=unknown flag: --rm-dist
Error: The process '/Users/runner/hostedtoolcache/goreleaser-action/2.1.0-pro/arm64/goreleaser' failed with exit code 1

Updated GoReleaser config and command line options to support GoReleaser v2.

https://goreleaser.com/deprecations/#-rm-dist
https://goreleaser.com/blog/goreleaser-v2/?h=v2#upgrading

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

Thanks for the fix!


How to submit all the asyc tasks to pool and wait for all of tasks to complete ?

My Code is as follows:
//yourWorker.js
const { ThreadWorker } = require('poolifier')

async function sleep(ms) {
    return new Promise((resolve, reject) => {
        setTimeout(() => resolve(), ms)
    })
}

const yourFunction = async ({ i }) => {
    console.log(`${i} - Start processing`);
    await sleep(500)
    console.log(`${i} - Completed processing`);
    return { ok: 1 };
}

module.exports = new ThreadWorker(yourFunction, {
    async: true,
});

// fixedExample.js
const { FixedThreadPool } = require('poolifier')

const run = async () => {
    let resolved = 0
    const pool = new FixedThreadPool(2, './yourWorker.js', {
        errorHandler: e => console.error(e),
        onlineHandler: () => console.log('worker is online')
    });

    const start = Date.now()
    const iterations = 10
    for (let i = 1; i <= iterations; i++) {
        await pool
            .execute({
                i,
            })
            .then(res => {
                resolved++
                if (resolved === iterations) {
                    return console.log('Time take is ' + (Date.now() - start))
                }
                return null
            })
            .catch(err => console.error(err))
    }
};

run().then(() => {
    console.log('Process completed!');
});

My output as follows:
worker is online
worker is online
1 - Start processing
1 - Completed processing
2 - Start processing
2 - Completed processing
3 - Start processing
3 - Completed processing
4 - Start processing
4 - Completed processing
5 - Start processing
5 - Completed processing
6 - Start processing
6 - Completed processing
7 - Start processing
7 - Completed processing
8 - Start processing
8 - Completed processing
9 - Start processing
9 - Completed processing
10 - Start processing
10 - Completed processing
Time take is 5072
Process completed!

What I want to achieve is without waiting for individual tasks to complete one after another, is it possible that we submit all the tasks to the pool and let them process async manner, and wait for the whole tasks to complete at the end(i.e after the for loop)?

I think you are blocking yourself in your loop with calling await pool.execute(...)...
You need e.g. Promise.all

@Shinigami92 Thanks you! Promise.all does the trick.


Is there any way to run fzf as a daemon via API?

I wish I could write ivy counsel mode for fzf in emacs, because term support in emacs is horroble so everything is messed up in output. Is there any way to run fzf as a daemon and send commands to it, so it will give away list of founds in some kind of format?
Or maybe you know other projects that make workaround for that, I saw you made vim plugin for fzf, I know nothing aboud VimL, can you explain please how it works there, you dumping output to some temporary file?

To answer the question, no. Have you checked https://github.com/bling/fzf.el ?

Yes, I'm actually used it, but soon my own config overgrowth this wrapper, so I wrote my own wrapper for it. I was thinking about using the same way as ivy uses ag command with wrapper but haven't succeed - I know little about shell programming, but suggests its because ag prints strictly to console while fzf have much more complicated rendering logic.

+1 to this. Decoupling the search/sorting from the UI frontend would let this be useable on Emacs. fzf.el isn't great since it has to use the term support.


add stamp selection slider tool to the documentation.

This is now included in the documentation. I have mentioned the user input values for the colour selector rgb, hsl and hex.


Timeouts on Every Controller Reconcile Loop

This is related to our timeouts design which was specifically for putting a plaster over issues like #5080 and #4452 where certain operations hit a 10s timeout which was much too small.
There are two issues central to this:

If a timeout is too short such that normal operations are unable to complete within the timeout, it's effectively a bug on our side. This was true of our handling of some ACME issuers.
Some operations can hang for too long, up to an amount of time where we can be reasonable sure that continuing to wait would be a waste of resources for both us and the server.

As described in the design document, crossplane has long context timeouts on most of its controllers to guard against the possibility of a hanging HTTP request causing a buildup of threads in a controller all waiting for a reply from an overloaded server.
We could add, say, 2 minute context timeouts to all of our controller Sync / reconcile operations as a guard against this. The number should be high enough that no reasonable operation would fail to complete in that time, or else the number should be a large default and we should make it configurable such that a cluster administrator could increase it in a pinch or decrease it as they see fit.
Other things such as HTTP clients should probably have timeouts configured too, but it's harder to pick a default value for all HTTP clients while it's easy enough to say something like "all controllers must complete within X minutes by default"
/kind bug

This is still needed IMO!
/remove-lifecycle rotten

/remove-lifecycle stale


Add move task operation

Description of the Change
Work in progress

@amitaekbote @tbak @corindwyer I addressed the remaining comments, and I think this is ready for a final review.


NOISSUE - Add channel ID validation

Add channel id validation and remove unnecessary error. Update
swagger doc accordingly.
Signed-off-by: Aleksandar Novakovic<EMAIL_ADDRESS>

@drasko I followed manager's API logic.

I agree with @drasko. Maybe ee should improve this. If the id is invalid we should return bad request and if the id is valid but not found than not found.
On the other hand, if we don't want to introduce complex validation, invalid ids won't be found, so not found as a response code is also ok.

@chombium it is somewhat irrelevant. Neither response would be wrong, but 404 is more accurate one - a resource with non UUID identifier does not exist.


Consider having Back button close specific editor instructions

I came to the new design this morning and found myself in a strange loop.  I wonder if it will be a nuisance to others.
When selecting an editor from this new look for the editor options:

You have two ways to close this "popup" but because this popup takes up the entire window, consider a third option users may gravitate towards:

If you click Back or hit a keyboard shortcut that activates history, you (might) leave the site.

@SpaceShot Thanks!
This could be corrected by managing History state when user is on the page - and (which is harder) when page starts. The page is already using simple History management to allow bookmarking for main navigation:
https://github.com/OmniSharp/OmniSharp.github.io/pull/27
http://www.omnisharp.net/#integrations
As each modals has its own has, we should be able to manage state.
Thoughts?

note to self: http://git.io/vUC5R


Error highlighting not working for files in UNC paths on Windows

Problem
Having typed invalid F# code inside am fsharp file in a directory with a unc file path (e.g. \\companyname.local\users\myname\fsharp etc.), no red underlines appear to highlight the syntax error.
Other features appear to be working correctly (syntax highlighting, tooltips, code lens, auto complete, etc.).
Steps to reproduce

Create a new fsharp file inside a directory with a unc path
Type any invalid F# code (e.g. let x = let y)
The error is not highlighted.

Machine infos

Operating system: Windows_NT
Arch: x64
VSCode: 1.33.1
Runtime: netcore (problem also occurs with net)
Dotnet version: 2.1.503
MSBuild version:

Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

Expected behaviour
Having typed let x = let y the second let should be underlined with an error saying "the block following this 'let' is unfinished ..." when moused-over.
Screenshots
Actual:

Expected (as seen in a file in an absolute directory e.g. C:\fsharp):

Additional context
F# Language Service output:
[10:22:46 INFO ] Logging to output at level INFO. If you want detailed messages, try level DEBUG.
[10:22:46 INFO ] No FSAC url provided, using http://<IP_ADDRESS>:8765/
[10:22:46 INFO ] Netcore runtime specified
[10:22:46 INFO ] finding FSAC for
	runtime: UserSpecified (NetcoreFdd)
	mono: mono
	dotnet: C:\Program Files\dotnet\dotnet.exe
[10:22:47 INFO ] listening notification on /notify started
[10:22:47 INFO ] listening notification on /notifyWorkspace started
[10:22:47 INFO ] listening notification on /notifyAnalyzer started
[10:22:47 ERROR] Cannot execute unusedDeclarations, File '\\companyname.local\users\me\new.fsx' not parsed
[10:22:47 ERROR] Cannot execute lint, File 'filepath\new.fs' not parsed
[10:22:47 ERROR] Cannot execute unusedOpens, File '\\companyname.local\users\me\new.fsx' not parsed
[10:22:47 ERROR] Cannot execute simplifiedNames, File '\\companyname.local\users\me\new.fsx' not parsed
[10:43:11 ERROR] Cannot execute documentation, File '\\companyname.local\users\me\new.fsx' not parsed
[10:43:11 ERROR] Cannot execute signature, File 'filepath\new.fs' not parsed
[10:43:11 ERROR] Cannot execute recordStubGenerator, File '\\companyname.local\users\me\new.fsx' not parsed
[10:43:11 ERROR] Cannot execute interfaceStubGenerator, File '\\companyname.local\users\me\new.fsx' not parsed

Interestingly in the FSAC logs contain the following line:
[10:43:12 DEBUG] WebSocket message: '{"Kind":"errors","Data":{"File":"\\companyname.local\users\me\new.fsx","Errors":[{"FileName":"\\companyname.local\users\me\new.fsx","StartLine":2,"EndLine":2,"StartColumn":14,"EndColumn":15,"Severity":"Error","Message":"Incomplete structured construct at or before this point in pattern","Subcategory":"parse"},{"FileName":"\\companyname.local\users\me\new.fsx","StartLine":2,"EndLine":2,"StartColumn":5,"EndColumn":8,"Severity":"Error","Message":"The block following this 'let' is unfinished. Every code block is an expression and must have a result. 'let' cannot be the final code element in a block. Consider giving this block an explicit result.","Subcategory":"parse"},{"FileName":"\\companyname.local\users\me\new.fsx","StartLine":2,"EndLine":2,"StartColumn":14,"EndColumn":15,"Severity":"Error","Message":"Incomplete structured construct at or before this point in pattern","Subcategory":"parse"},{"FileName":"\\companyname.local\users\me\new.fsx","StartLine":2,"EndLine":2,"StartColumn":5,"EndColumn":8,"Severity":"Error","Message":"The block following this 'let' is unfinished. Every code block is an expression and must have a result. 'let' cannot be the final code element in a block. Consider giving this block an explicit result.","Subcategory":"parse"}]}}'

(Note: the real file paths have been replaced with `\\companyname.local\users\me\new.fsx' in the above logs.)

This has actually been fixed and error highlighting works as expected in v4.5.0 of Ionide.


Is there any ways to use this plugin with Flowtype?

type Test = Map<string, any>

const test: Test = Immutable.Map({...})
const { a, b, c } = test

property 'a'. Property not found on Map.

type Test = {
  a: number,
  b: number,
  c: string,
}

const test: Test = Immutable.Map({...})
const a = test.get('a')

Flow: property 'get'. Property not found in object type

type Test = {
  get: Function,
  set: Function,
  a: number,
  b: number,
  c: string,
}
const test: Test = Immutable.Map({...})
const a = test.get('a')
const { b, c } = test

this is OK but bit strange for use. if i use getIn or merge, I have to define that function also.

I found some tricky ways to solve this
    type Test = {
        a: number,
        b: number,
        c: string,
    } & Map<string, any>


Demo Project ALLOWED_HOSTS

not a big deal...
my local dev host is not named kaveri although yours might be...
I generally add <IP_ADDRESS> to my ALLOWED_HOSTS

Fixed


Trollhunter feature not works

After follow the document: http://www.endurojs.com/docs/trollhunter
I enabled security, and restart Enduro project, then visit:
http://localhost:5000/
I got such error:
Error: ENOENT: no such file or directory, stat '/usr/local/lib/node_modules/enduro/node_modules/enduro_admin/_generated/enduro_login.html'
at Error (native)
both in the browser page and the command line terminal.

works fine for me. What endruo version are you using(enduro --version)?

$ enduro --version
1.4.31
P.S.
I appreciate Enduro very much, but,
I don't think such answers as 'works fine for me' is positive.

crap, sorry about that :-( Thank you for reporting this. I should have spent more time investigating this.
Fixed this in 9edbaee0e46aa514060095e3cda1ab0952edb97e, just update enduro(npm i enduro -g) and let me know if it works for you :-)

Works for me now,
$ enduro --version
1.4.34
Thank you very much!


[WIP] Remove col3 from dashboard widgets

Removing col3 reference from the dashboard.
@miq-bot add-reviewer @Fryguy
@miq-bot add-label enhancement
@miq-bot assign @Fryguy

@jeffibm Is this ready to merge?

@jeffibm Is this ready to merge?

Yes.


Add support for using experimental dockerd

I would like to try out the experimental syntaxes provided by buildkit.
Would it be possible to add an instance image that runs dockerd in --experimental mode? Thanks!

I see now I can simply use DOCKER_BUILDKIT=1 for the experimental syntaxes but it may still be useful to have an image that runs dockerd in --experimental mode.
I'll leave it up for the maintainers to decide. Feel free to close if you feel there is little value to be gained here.

you can enable experimental mode by stopping the docker daemon pkill -9 -f dockerd chaning /etc/docker/daemon.json to enable experimental mode and then starting it with dockerd &


Mute does not actually mute the speakers.

Before opening the issue, have you...?

[X] Searched for existing issues
[X] Read through the Monitor-Troubleshooting Wiki
[X] Updated MonitorControl to the latest version (if applicable)

Describe the issue
Turning the volume all the way down, or using the mute key does not mute the speakers, it only lowers the volume.
In other words, the value interpreted as 0, no volume by the Mac does not correspond to the actual mute on the monitor speakers?
I tried to look for existing issues and in the wiki and I didn't happen to find anything related to my issue..
Thanks!
Expected behavior
Turning the volume all the way down Is supposed to mute the speakers.
Anything else?
No response
Environment Information (please complete the following information)
- macOS version: 11.2
- Mac model: 2,6 GHz Intel Core i7 quad-core
- MonitorControl version: 4.0.2
- Monitor(s): Samsung C34J791
- Monitor Cable(s)/Connection(s): Thunderbolt
- Apple Silicon/M1 (yes or no): No

Hi, this is mostly our fault, because it should be part of the wiki.
Can you try:

Preferences > Displays > Toggle Show advanced settings at the bottom
Toggle Enable Mute DDC command for the display.

I'll try to get around to updating the wiki + moving it outside of Github wiki and into the monitorcontrol.app website, so external contributors can contribute to it.

That worked like a charm, thanks for your kindness and your fantastic work ♡


HTMLtoTIFF.run() gets stuck when converting mhtml, htm to TIFF

I checked out this repo. In HTMLtoTIFF, I replaced input.html with these 2 files in the attachment, HTML - Wikipedia.mhtml, and Aspose API - Wikipedia.htm. The application ran forever and not produced any TIFF files.
html.zip

@tmhung88
Please use the latest version of Aspose.HTML for Java 21.12 to avoid this issue.


Documentation: Explain <image entrypoint>

In the instructions there are some small pieces left out that make documentation difficult to understand.
This is one piece. What is the image entrypoint? I think it is wise not to assume people reading know what that is.
What are the minimum required ingredients to get this tool working?
What script names do I need to create in order to follow along with the instructions?

From what I can tell, the <image entrypoint> and <(optional) image command> refer to the original entrypoint and command you specified in your dockerfile when you built the container image. You have to re-specify them when using the rie because it needs to run its own entrypoint first. These are almost always going to be the entrypoint for the Runtime Interface Client for your language of choice.
So for example if you're using Node, you will probably have the following in your dockerfile:
RUN npm install aws-lambda-ric
ENTRYPOINT ["npx", "aws-lambda-ric"]
CMD ["index.handler"]

In that case, you should invoke the rie like this:
docker run -d \
    -v ~/.aws-lambda-rie:/aws-lambda \
    -p 9000:8080 \
    myfunction:latest \
    --entrypoint /aws-lambda/aws-lambda-rie \
    npx aws-lambda-ric \
    index.handler


[Bug]: Can't edit chunk(s)

Is there an existing issue for the same bug?

[X] I have checked the existing issues.

RAGFlow workspace code commit ID
834c4d81f38d18704684f0d74ec235368b080023
cloned via ?
6fb1a181aa18216150de1a5c595b71d3470fca5f
RAGFlow image version
964a6f4e(v0.14.0~30) full
Other environment information
No response
Actual behavior
When I try to open the chunk edit form/window to add keywords or edit a chunk, I encounter an empty chunk textarea with an error: AttributeError("'str' object has no attribute 'args'")

Expected behavior
No response
Steps to reproduce
Not sure. I must try it first. Might get back later here to give a better description.

Additional information
Let me know if you need any more information. Thank you in advance for looking into this!

@Snify89 What document engine you are using ? Infinity or Elasticsearch?
Would you please also provide the log of RAGFlow server?
#3727 #3709 #3718 Fix several chunk related issues.

Thank you for your answer.
I have cloned from the 6fb1a181aa18216150de1a5c595b71d3470fca5f commit.
From then on I use these 2 from time to time
docker compose -f docker/docker-compose.yml pull
docker compose -f docker/docker-compose.yml up -d
the only change is .env
RAGFLOW_IMAGE=infiniflow/ragflow:dev
I use elastisearch.

ragflow-server  | AttributeError: 'str' object has no attribute 'args'
ragflow-server  | 2024-11-28 23:33:08,799 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:08] "GET /v1/kb/detail?kb_id=4c940f92acfd11efbc3a0242ac120006 HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:08,802 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:08] "GET /v1/chunk/get?chunk_id=dc2e773e4733320c57481ea4e78e5da3 HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:08,811 INFO     16 POST http://es01:9200/ragflow_efc7f36eac9d11ef855f0242ac120006/_search [status:200 duration:0.008s]
ragflow-server  | 2024-11-28 23:33:08,814 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:08] "GET /v1/chunk/knowledge_graph?doc_id=b45da274ad0111ef84b50242ac120006 HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:08,816 INFO     16 POST http://es01:9200/ragflow_efc7f36eac9d11ef855f0242ac120006/_search [status:200 duration:0.009s]
ragflow-server  | 2024-11-28 23:33:08,821 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:08] "POST /v1/chunk/list HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:12,163 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:12] "GET /v1/user/info HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:12,189 INFO     16 GET http://es01:9200/ragflow_8ed83f2cacc111ef974c0242ac120006/_doc/dc2e773e4733320c57481ea4e78e5da3?_source=true [status:404 duration:0.007s]
ragflow-server  | 2024-11-28 23:33:12,190 ERROR    16 Chunk not found
ragflow-server  | NoneType: None
ragflow-server  | 2024-11-28 23:33:12,190 ERROR    16 'str' object has no attribute 'args'
ragflow-server  | Traceback (most recent call last):
ragflow-server  |   File "/ragflow/api/apps/chunk_app.py", line 99, in get
ragflow-server  |     return server_error_response("Chunk not found")
ragflow-server  |   File "/ragflow/api/utils/api_utils.py", line 126, in server_error_response
ragflow-server  |     if len(e.args) > 1:
ragflow-server  | AttributeError: 'str' object has no attribute 'args'
ragflow-server  | 2024-11-28 23:33:12,203 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:12] "GET /v1/kb/detail?kb_id=4c940f92acfd11efbc3a0242ac120006 HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:12,206 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:12] "GET /v1/chunk/get?chunk_id=dc2e773e4733320c57481ea4e78e5da3 HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:12,214 INFO     16 POST http://es01:9200/ragflow_efc7f36eac9d11ef855f0242ac120006/_search [status:200 duration:0.009s]
ragflow-server  | 2024-11-28 23:33:12,215 INFO     16 POST http://es01:9200/ragflow_efc7f36eac9d11ef855f0242ac120006/_search [status:200 duration:0.004s]
ragflow-server  | 2024-11-28 23:33:12,222 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:12] "POST /v1/chunk/list HTTP/1.1" 200 -
ragflow-server  | 2024-11-28 23:33:12,223 INFO     16 <IP_ADDRESS> - - [28/Nov/2024 23:33:12] "GET /v1/chunk/knowledge_graph?doc_id=b45da274ad0111ef84b50242ac120006 HTTP/1.1" 200 -

The chunks are extracted successfully and shown in the other window, where you can enable/disable it.
I haven't tested much, sorry.
Settings:
nomic embedding 1.5 (the one, that came with the image.)
Paper Chunk Method
Auto keyword 1
Auto question 1
I have glm4:9b in ollama implemented and minicpm:8b
OFF-Topic:
How is OCR done in case of PDFs/Images?
What if there's OCR data already present and what is used, when theres no OCR layer yet?
Is it possible to use a img2text model for ocring?

@Snify89 v0.14.1 is released. You may use the new version to check if the issue is resolved.

There is a built-in OCR model, and user can't configure it, now.

Thank you. The error perstisted still somehow and it said "chunk not found" instead of the other error. I have set up everything from scratch and now it works :)

@Snify89 v0.14.1 is released. You may use the new version to check if the issue is resolved.

Still unable to edit or add chunks through the chunk interface, using the Infinity document engine.

Traceback (most recent call last):
File "/ragflow/api/apps/chunk_app.py", line 237, in create
settings.docStoreConn.insert([d], search.index_name(tenant_id), doc.kb_id)
File "/ragflow/rag/utils/infinity_conn.py", line 361, in insert
table_instance.insert(documents)
File "/ragflow/.venv/lib/python3.10/site-packages/infinity/remote_thrift/table.py", line 183, in insert
constant_expression = get_remote_constant_expr_from_python_value(value)
File "/ragflow/.venv/lib/python3.10/site-packages/infinity/remote_thrift/utils.py", line 321, in get_remote_constant_expr_from_python_value
raise InfinityException(ErrorCode.INVALID_EXPRESSION, f"Invalid constant type: {type(value)}")
infinity.common.InfinityException: (<ErrorCode.INVALID_EXPRESSION: 3069>, "Invalid constant type: <class 'list'>")

@Snify89 v0.14.1 is released. You may use the new version to check if the issue is resolved.
Still unable to add chunks through the chunk interface.

Traceback (most recent call last):
File "/ragflow/api/apps/chunk_app.py", line 237, in create
settings.docStoreConn.insert([d], search.index_name(tenant_id), doc.kb_id)
File "/ragflow/rag/utils/infinity_conn.py", line 358, in insert
table_instance.insert(documents)
File "/ragflow/.venv/lib/python3.10/site-packages/infinity/remote_thrift/table.py", line 183, in insert
constant_expression = get_remote_constant_expr_from_python_value(value)
File "/ragflow/.venv/lib/python3.10/site-packages/infinity/remote_thrift/utils.py", line 321, in get_remote_constant_expr_from_python_value
raise InfinityException(ErrorCode.INVALID_EXPRESSION, f"Invalid constant type: {type(value)}")
infinity.common.InfinityException: (<ErrorCode.INVALID_EXPRESSION: 3069>, "Invalid constant type: <class 'list'>")

Fixed


{IoT} Fix recorder and poller issues

Related command
az iot hub create
az iot hub update
az iot hub delete
Description
For the following commands:
az iot hub create
az iot hub update
az iot hub delete
followed the instructions here and removed polling=True so a separate thread is not created.
Also fixed the recorder so that it replaces the SharedAccessKey correctly. Before, we had to manually fix the recording after rerecording tests.
Testing Guide
azdev test test_iot_hub
Ran the test live and then reran it using the recording and both pass.
History Notes
[IoT] Fix poller issues for az iot hub create, az iot hub update, az iot hub delete.

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

IoT


bugs with key management

If I do getdm from diferent users (using differents .env) it shows all the messages that other users have received, is that the expected behavior?
I don't know if it's because it's only one device that mostro-cli assumes I'm a single person and ignores the keys I have in the .env and continues with the identity key that I first put in the database? isn't that right?
see:

Those messages were sent to other npubs before

now mostro-cli generates a seed phrase and save it on database (~/.mcli/mcli.db), then rotate keys, so right now you can't use multiple users because mostro-cli is always looking on the same database