Fix download links for msi

Addresses #2522

Hi @vors, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Sergei Vorobev). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

@vors These links are corrected every two weeks!
May be use common link?  Latest release

@iSazonov it's been discussed but too many users do not know which installer corresponds to their platform (despite extensive documentation), so this is easier than answering the same question a dozen times.

Anyone who creates a new release creates a release notes where this information is already present.

Like I said, it's already extensively documented. Unfortunately that does not help users who do not read documentation (nor release notes). There exist enough users (judging by the number of questions I've fielded about exactly this) to warrant this info running up front, immediately available in the readme/front page.

I can well understand your headache that such questions raise. 😊
Maybe we should generate the file based on a template?


chore: always include invite code in oob ecash

OOBNotesV2 require an invite code.

Backporting to 0.4

Successfully created backport PR for releases/v0.4:

#5656

What about federations that want to stay private-ish? This could lead to accidentally leaking the invite code. The boolean argument was put in place for that purpose (and also to avoid size increases for cases where it matters like printed e-cash).


Closes #3232 Added Margin Bottom to UI of Milestone

Closes #3232
Fixes Issue
Added Bottom Margin to UI of milestone
Changes proposed

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] My change requires changes to the documentation.
[x] I have updated the documentation accordingly.
[x] All new and existing tests passed.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

## Note to reviewers

Can anyone please merge it ?

Can you please show a picture of before and after

Hey Eddie as per your requirement I have done the necessary changes.
Before:

After:

Someone please review it and merge it if everything is working fine

Hey ! Please review and merge this PR?

@eddiejaoude please review my PR and close this issue as then only I can take up another issue and contribute to it.

okay will do those changes and raise the PR again.

You can update this PR, but if you decide to raise a new PR please close this one

You can update this PR, but if you decide to raise a new PR please close this one

I will update this PR only, its totally fine for me but if adding new PR is easier for you to review then I will do so.

Maybe raise a new PR 👍  I will let you close this one

okay I will close this one then


feature/Att-kunna-bestmma-stegprocessen-CU-8wqa48

Adding functionality to decide the navigation between steps in a form.
First test of clickup github integration.

Task linked: CU-8wqa48 Att kunna bestämma stegprocessen

Have opinion the use of non english language in branch name.

What happened to the routine of working with a develop branch?!

Have opinion about the use of non english language in pr name.

Yeah i know it was a test with Clickup, it outgenerates the PR-Name :)

Have opinion about the use of non english language in pr name.

Yeah i know it was a test with Clickup, it outgenerates the PR-Name :)

So the branch name should still be in english (y)

What happened to the routine of working with a develop branch?!

Also noticed this, we need to fix this asap. It's the lack of guidelines to how a repo should be organized :)

Please recreate this pr to be rebased into develop


Last layer elision

Do you do last layer elision similar to the original IBP? I saw some references to C_merged, is it doing something similar?
if yes it'd be great if you could describe that bit of the code a little bit. I'm a bit confused about the shape of tensors as this merging happens. I think C should have have the shape batch * (num_classes - 1) * num_classes) and IBP kind of merges all specs into one step by constructing the worst-case-logits (picking lower bound for correct class and upper bound for all the wrong classes). But I'm not sure how this changes when we do this merging step.
Keep up the good work.

btw I'm particularly talking about the forward propagation and not crown style backward style.

Hi,
Thanks for your question.
Yes, we did a similar way as IBP to merge the C matrix with the last linear layer (without loss fusion). You can refer to the code start from here:
https://github.com/KaidiXu/auto_LiRPA/blob/7e1fbf12d857ef8d411d80eef1bd73d9ae4ba3be/auto_LiRPA/bound_general.py#L727
Then we merge the C matrix here:
https://github.com/KaidiXu/auto_LiRPA/blob/7e1fbf12d857ef8d411d80eef1bd73d9ae4ba3be/auto_LiRPA/bound_ops.py#L686
the shapes are C: [batch, (num_classes - 1), num_classes)], w: [num_classes, num_neurons], so the merged w would have shape: [batch, (num_classes - 1), num_neurons].
Finally, it multiplies with the previous h_L and h_U at here: https://github.com/KaidiXu/auto_LiRPA/blob/7e1fbf12d857ef8d411d80eef1bd73d9ae4ba3be/auto_LiRPA/bound_ops.py#L700
The shape of h_L and h_U is [batch, num_neurons], so the output shape will change to [batch, (num_classes - 1)] at:https://github.com/KaidiXu/auto_LiRPA/blob/7e1fbf12d857ef8d411d80eef1bd73d9ae4ba3be/auto_LiRPA/bound_ops.py#L653 which implies the worst-case-logits as you said.
Best,
Kaidi Xu

From: Milad Alizadeh<EMAIL_ADDRESS>Sent: Monday, November 2, 2020 9:19 AM
To: KaidiXu/auto_LiRPA<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: Re: [KaidiXu/auto_LiRPA] Last layer elision (#5)
btw I'm particularly talking about the forward propagation and not crown style backward style.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKaidiXu%2Fauto_LiRPA%2Fissues%2F5%23issuecomment-720499901&data=04|01|xu.kaid%40northeastern.edu|b64a6adbd95f4a18b48f08d87f3a55f9|a8eec281aaa34daeac9b9a398b9215e7|0|0|637399235809284694|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=Xm%2BX65tktQxuypRMEB20tzKUAt3CEoEi2qzu%2BiCqeQQ%3D&reserved=0, or unsubscribehttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKG6JD5PVG35MJXZJOC5XO3SN25XXANCNFSM4THQH22Q&data=04|01|xu.kaid%40northeastern.edu|b64a6adbd95f4a18b48f08d87f3a55f9|a8eec281aaa34daeac9b9a398b9215e7|0|0|637399235809294681|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=wRu89eQ6QoNg9cy13ISM3pZobb4jRyl2RsC%2BGr%2FPfnA%3D&reserved=0.

Thanks for the quick reply Kaidi, this is getting clearer to me. One more questions what are lb and ub and how are they different from the actual bounds? And why are they being multiplied by C when merging? What are their shapes?
if C is not None:
    w = C.matmul(w)
    lb = C.matmul(lb) if not isinstance(lb, float) else lb
    ub = C.matmul(ub) if not isinstance(ub, float) else ub

They are lower/upper bias of the linear layer. If no perturbation on the bias, then they are the same value actually with the shape [output_neurons]. Refer to the IBP paper https://arxiv.org/pdf/1810.12715.pdf eq. (9).
Best,
Kaidi Xu

From: Milad Alizadeh<EMAIL_ADDRESS>Sent: Monday, November 2, 2020 12:42 PM
To: KaidiXu/auto_LiRPA<EMAIL_ADDRESS>Cc: Kaidi Xu<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [KaidiXu/auto_LiRPA] Last layer elision (#5)
Thanks for the quick reply Kaidi, this is getting clearer to me. One more questions what are lb and ub and how are they different from the actual bounds? And why are they being multiplied by C when merging? What are their shapes?
if C is not None:
w = C.matmul(w)
lb = C.matmul(lb) if not isinstance(lb, float) else lb
ub = C.matmul(ub) if not isinstance(ub, float) else ub
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKaidiXu%2Fauto_LiRPA%2Fissues%2F5%23issuecomment-720622280&data=04|01|xu.kaid%40northeastern.edu|8b6b9cf756a94fcd362808d87f56a099|a8eec281aaa34daeac9b9a398b9215e7|0|0|637399357319934381|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=%2B3epjWezdpC9lZTLXamK1UjyOofRhm7Q4Aii8RcNO10%3D&reserved=0, or unsubscribehttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKG6JDZPF4EIT5TLAMTGECLSN3VPFANCNFSM4THQH22Q&data=04|01|xu.kaid%40northeastern.edu|8b6b9cf756a94fcd362808d87f56a099|a8eec281aaa34daeac9b9a398b9215e7|0|0|637399357319944378|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=vyDrZcIlwsmzIKlWD%2BiNwvfHyqnjPK%2B6KT9MYEleiGo%3D&reserved=0.

Ah of course! Do we typically have perturbation on the bias?

No, most existing works only perturb on input.
Best,
Kaidi Xu

From: Milad Alizadeh<EMAIL_ADDRESS>Sent: Tuesday, November 3, 2020 6:08 PM
To: KaidiXu/auto_LiRPA<EMAIL_ADDRESS>Cc: Kaidi Xu<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: Re: [KaidiXu/auto_LiRPA] Last layer elision (#5)
Ah of course! Do we typically have perturbation on the bias?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKaidiXu%2Fauto_LiRPA%2Fissues%2F5%23issuecomment-721421188&data=04|01|xu.kaid%40northeastern.edu|f87e31258528467d8c9c08d8804d5a27|a8eec281aaa34daeac9b9a398b9215e7|0|0|637400416996876115|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=z%2B0EzSmKt%2Fhxadk2CjGRGxTeM9KcryrnaQEyYvsCXxQ%3D&reserved=0, or unsubscribehttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKG6JD6B2CYGC2452I67XPDSOCEODANCNFSM4THQH22Q&data=04|01|xu.kaid%40northeastern.edu|f87e31258528467d8c9c08d8804d5a27|a8eec281aaa34daeac9b9a398b9215e7|0|0|637400416996876115|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=7R34o883jVJOjZOnoWsNWkC1lpvuadsxrjPGjDVLuQc%3D&reserved=0.

In verification setting we typically do not have perturbation on model weights and bias. But our framework does support perturbation on parameter space (model weight or bias), as they are also inputs of the computational graph. In our paper we demonstrated that training a model with weight perturbations can lead to smooth optimization landscape and better generalization.


Large files can be uploaded in smaller chunks.

I didn't understand this title.
In my poor knowledge, client side must slice file into a lot of chunk by using "slice" methods,   then post piece by piece. Is it true?

yes that's true.
we can slice a large file into many small chunks and then upload them.
1 G = 1024 * 1M   ==> we can slice 1G file into 1024 slices of 1M. and then upload them.
server will retrieve these chunks and stick them together , then the main 1G file will be created.


not working with postgres 9.5

Suggestion (if I'm not wrong): Change "FROM postgres:9.4" to "FROM postgres:latest" in Dockerfile.
Thanks!

@repher, I made this update that uses :latest
https://hub.docker.com/r/annixa/docker-pg_dump/ auto built from https://github.com/Annixa/docker-pg_dump

thanks! that helps! I'm using this on an Synology NAS na dit seems to work great. I'll keep you updated if there is something off. Thanks again!
Idea: adding an extra PGHOST environment variable for backing up non docker databases


not all available tags are shown in dropdown

try searching for dockerfile/java that has a couple of different tags, but panamax only shows latest
Local Panamax component versions:
   UI: 0.2.11
  API: 0.2.11
Local Panamax Installer version:
  0.3.4

@leon Panamax loads the tags after you select the drop-down. I was able to bring them up. Let me know if they still dont load.

issue persists:
try searching for: webdevops/bootstrap
then click on Tags. nothing will appear
even though there are lots of tags: https://hub.docker.com/r/webdevops/bootstrap/tags/


[HOLD for payment 2024-10-16] [$250] Sign in – Concierge chat does not open via deeplink when logging in with a new account

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.28-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4916548
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause - Internal Team
Action Performed:

Go to https://staging.new.expensify.com/
Sign out
Navigate via deeplink https://staging.new.expensify.com/concierge
Sign in with a new Gmail account

Expected Result:
Concierge chat opens
Actual Result:
LHN opens
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/user-attachments/assets/9f4c54fc-0661-4154-b3fb-5ee43728af7e
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01172b48a244279bbf
Upwork Job ID:<PHONE_NUMBER>888862736
Last Price Increase: 2024-09-04
Automatic offers:

CyberAndrii | Contributor | 103916722

Issue OwnerCurrent Issue Owner: @allroundexperts / @sonialiap

Proposal
Please re-state the problem that we are trying to solve in this issue.
Concierge chat does not open via deeplink when logging in with a new account on narrow screens.
What is the root cause of that problem?
Once onboarding is finished, the concierge chat will only open on screens wider than 800px. On narrower screens the home page will open instead.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/libs/Navigation/AppNavigator/Navigators/OnboardingModalNavigator.tsx#L40-L49
What changes do you think we should make in order to solve the problem?
We should first fix InitialURLContext to correctly return the route. Currently, initialURL is set to the full URL even when the type is Route.
https://github.com/Expensify/App/blob/7ebfaa0daaa43a20083250e0f263964ed5b647b2/src/components/InitialURLContextProvider.tsx#L10
I propose adding a separate initialRoute property and changing the type of initialURL to string.
-initialURL: Route | undefined;
+initialURL: string | undefined;
+initialRoute: Route | undefined;

Then in the OnboardingModalNavigator component retrieve the initial route like this
const {initialRoute} = useContext(InitialURLContext);

Finally, update the if statement to check if the initial route was pointing to the concierge chat
+const shouldNavigateToConciergeChat = initialRoute === ROUTES.CONCIERGE;
-if (shouldUseNarrowLayout) {
+if (shouldUseNarrowLayout && !shouldNavigateToConciergeChat) {

Proposal
Please re-state the problem that we are trying to solve in this issue.
Concierge chat does not open via deeplink when logging in with a new account
What is the root cause of that problem?
This is a regression from https://github.com/Expensify/App/pull/47829. The PR added a check to stop listening for updates after ONYXKEYS.NVP_ONBOARDING data is set.
https://github.com/Expensify/App/blob/aaa60b9103af83aaa58222e3f36e8cbfbd57e5c3/src/libs/actions/Report.ts#L2665-L2672
Later, the code determines whether to navigate to the deeplink immediately or wait until onboarding is completed. The decision is based on the onboarding.hasCompletedGuidedSetupFlow property.
The issue is that onboarding.hasCompletedGuidedSetupFlow is initially set to false, which means Onyx.disconnect(connection);  will be called before it changes to true.
What changes do you think we should make in order to solve the problem?
We should call Onyx.disconnect only after onboarding is completed.
+                    const hasCompletedGuidedSetupFlow = hasCompletedGuidedSetupFlowSelector(onboarding);
+
-                    if (onboarding) {
+                    if (hasCompletedGuidedSetupFlow) {

@allroundexperts what do you think of the above proposal?

@CyberAndrii's proposal looks good to me. It has the correct RCA and the solution seems to work as well.
🎀 👀 🎀 C+ reviewed

@allroundexperts @CyberAndrii what's the status of this?

Hm... Just looking at this now. I think this slipped from my list of issues. Reviewing now.

Payment summary:

@allroundexperts $250 please request in ND and complete the checklist
@CyberAndrii $250 paid in upwork ✔

Checklist

https://github.com/Expensify/App/pull/47829
https://github.com/Expensify/App/pull/47829/files#r1807954482
N/A
A regression test would be good to have here.

Regression test

Make sure that you're logged out of any existing account.
Navigate via deeplink to /concierge page
Sign in with a new Gmail account

Verify that Concierge chat opens
Do we 👍 or 👎 ?

Thanks!


Pretrained middleburry weights

Amazing work!
I understand from the name of the weights file that the published weights are those for the eth3d dataset.
Is it possible to publish the weights for Middlebury as well?
Thanks!

Yes. Can you please share middleburry trained model as well?

Yes. Can you please share middleburry trained model as well?


Unable to parse sample configs when invoking /train api in docker shell

Rasa NLU version:
latest-full
Operating system (windows, osx, ...):
OSX (but running interactive docker container)
Content of model configuration file:
Rasa config found at: /app/sample_configs/config_train_server_md.yml
Issue:
I am running latest-full docker image in interactive mode via docker run -it --entrypoint bash rasa/rasa_nlu:latest-full.
Once I am in the shell, I run the entrypoint script in background: ./entrypoint.sh start --path projects  -P3000 &.
I then try to train on one of the existing yml samples using curl command from Rasa docs:
curl -XPOST -H "Content-Type: application/x-yml" localhost:3000/train?project=my_project \
    -d @sample_configs/config_train_server_md.yml

This persumably results in YAML parse error, viz.
{
  "error": "while parsing a block mapping\n  in \"<unicode string>\", line 1, column 1\ndid not find expected key\n  in \"<unicode string>\", line 1, column 15"
}

As an aside, on my end, I would simply like to run Spacy entity extraction on localhost within the container. I have been following the docs, but I am not able to successfully create a project which leverages this pretrained model.

Issue above is resolved using --data-binary @config-file. I am now able to train models and make use of OOB Spacy entity extractor. Thanks!


feature: replace getCurrentAccount method

Summary
Change the way of retrieveing the currently selected metamask account.
Expected behavior / User Story
No response

Implemented in #170
Dapp fixed in #156


mkdocs: auto-scroll to current section

Irregardless of which section was viewed, the navbar would be displayed scrolled to the top.   With this, it will scroll to the currently viewed section.
(The fix is adding a $(document).ready() to what was proposed in https://github.com/mkdocs/mkdocs/issues/803, because I found that this was needed to make it not fail. No JS expert, sorry.)
I've tried placing the file at its right place (stdlib-docs/docs/), but that directory apparently gets nuked by ponyc ... --docs, so it'll be copied there when it's needed.

thanks @srenatus
I merged this, later today, can you check it out and make sure its working?

@SeanTAllen: it's working as expected :+1: thanks for merging.

Awesome. Thanks for checking @srenatus.


Bug in array_merge_recursive_distinct() function.

Hi
I think there might be a bug in the array_merge_recursive_distinct() function in ClientManager.php.
I get the following errors:
Notice: Undefined index: default in /www/html/t/imap/vendor/webklex/php-imap/src/ClientManager.php on line 200
Warning: array_merge(): Argument #1 is not an array in /www/html/t/imap/vendor/webklex/php-imap/src/ClientManager.php on line 207
The array looks malformed - print_r($config) at Line 189 in ClientManager.php gives:
Array ( [default] => default [date_format] => d-M-Y [accounts] => Array ( [gmail] => Array ( [host] => imap.gmail.com [port] => 993 [encryption] => ssl [validate_cert] => 1 [username] =><EMAIL_ADDRESS>[password] => password [authentication] => imap ) ) [options] => Array ( [delimiter] => / [fetch] => 1 [fetch_body] => 1 [fetch_flags] => 1 [message_key] => list [fetch_order] => asc [common_folders] => Array ( [root] => INBOX [junk] => INBOX/Junk [draft] => INBOX/Drafts [sent] => INBOX/Sent [trash] => INBOX/Trash ) [open] => Array ( ) [decoder] => Array ( [message] => utf-8 [attachment] => utf-8 ) ) [events] => Array ( [message] => Array ( [new] => Webklex\PHPIMAP\Events\MessageNewEvent [moved] => Webklex\PHPIMAP\Events\MessageMovedEvent [copied] => Webklex\PHPIMAP\Events\MessageCopiedEvent [deleted] => Webklex\PHPIMAP\Events\MessageDeletedEvent [restored] => Webklex\PHPIMAP\Events\MessageRestoredEvent ) [folder] => Array ( [new] => Webklex\PHPIMAP\Events\FolderNewEvent [moved] => Webklex\PHPIMAP\Events\FolderMovedEvent [deleted] => Webklex\PHPIMAP\Events\FolderDeletedEvent ) [flag] => Array ( [new] => Webklex\PHPIMAP\Events\FlagNewEvent [deleted] => Webklex\PHPIMAP\Events\FlagDeletedEvent ) ) [masks] => Array ( [message] => Webklex\PHPIMAP\Support\Masks\MessageMask [attachment] => Webklex\PHPIMAP\Support\Masks\AttachmentMask ) )

Hi @LondonWebFactory ,
thanks for your report. This functionality is actually intended. You've removed the default account from your accounts array, but you are still referencing to it. You can either add a new "default" called account or change the default option to gmail since that seems to be the only available account in your case.
Best regards,

Hi @Webklex
Many thanks for the speedy reply and you were spot on. I had commented out the default connection in the config file.
Kind Regards,
Adrian

Thanks, your welcome :)


API / controller logging should be via logspout

I haven't dug into the code too deeply yet, but conversation in #3947 exposed that deis-controller logs are written directly to a volume that it shares with deis-logger.  This means that the route deis-controller logs take to their resting place on that volume is different than the route taken by application logs making their way to the same place.  In the case of an application, it's via STDOUT --> deis-logspout --> deis-logger --> the volume.
There's a slight problem that arises from this discrepancy.  In the increasingly common scenario where an operator runs "Ceph-less," Deis is installed sans the storage subsystem components and adequate, external alternatives are provided for those components and any other Deis component that expresses a direct dependency on the storage subsystem (e.g. deis-database).  When opting to run this way, deis-logger is among the components not installed.  A consequence of this is that deis-logspout is configured to forward logs directly to an external log service.  Since application logs are forwarded via deis-logspout, those logs all make it to the external service.  deis-controller logs, on the other hand, since they take a different route, would never make it to the external log service.
It seems this could be easily corrected by transitioning deis-controller to writing its logs via STDOUT and logspout just as any application does.  This would increase consistency and guarantee that whether running with or without Ceph and deis-logger, all logs ultimately land in one common place via a consistent path.
In #3947 @bacongobbler has noted some possible problems with this approach, but we should probably move that discussion here.

I think the right way to tackle this is to have the controller prefix log messages for application events with some "tag" like [kents-awesome-app] and then give our customized logspout the smarts to understand that such messages "belong" to the app and not the controller.
I did briefly think about putting those smarts in logger instead of logspout, but logspout makes more sense.  Those running the "stateless platform" (cephless) are already not necessarily using logger-- which is part of the reason for this PR in the first place.  This will ensure log messages from the controller (including app events) will be handled correctly regardless of whether they're being forwarded to logger or to somewhere else, like Papertrail.


How To Add Both Image and Text on Tabs

I have implemented the module and it works well.Was just wondering if there is a way of adding custom images and text to the tab.Thank you in advance

Did you find solution?


JetBrains template does not include *.iml entry

My module config file moduleName.iml is not being ignored after adding the JetBrains template.

And the whole .idea/ directory.

@bamapookie @lingsamuel
All templates are periodically fetched from the https://github.com/github/gitignore/ repository. JetBrains template is located here: https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
As you can see, the *.iml rule is not present - it was removed from the template.
The same thing about .idea/ directory entry.
Since we depend on the GitHub's repository, the only thing to fix that is creating new user's template and define all mising rules by your own.

Thanks.  I reviewed the recommendations from JetBrains, and it should not be in the gitignore file.  That particular file does not contain user-specific settings anymore (if it ever did).


Unable to fetch project/repo content from Gitlab

Can someone help me why am I unable to pull the projects data from gitlab. From the exception I can clearly notice that it is trying to hit "https" instead of "http". I have given "gitlab.protocol=http" in my application.properties file of gitlab. Not sure what is wrong with my configuration.. could some one help me here. When I access the same url with "http" I can see some data there..
GitLab Console:
2016-12-09 18:08:00,001 INFO  c.c.d.collector.CollectorTask - Running Collector: Gitlab
2016-12-09 18:08:00,013 INFO  c.c.d.collector.CollectorTask - -----------------------------------
2016-12-09 18:08:00,013 INFO  c.c.d.collector.CollectorTask - Starting...
2016-12-09 18:08:00,014 INFO  c.c.d.collector.CollectorTask - -----------------------------------
2016-12-09 18:08:00,347 ERROR o.s.s.s.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task.
org.springframework.web.client.ResourceAccessException: I/O error on GET request for "**https://192.168.XXX.XXX/api/v3/projects/gitlab1%2FMyProject/repository/commits/?ref_name=master&since=2016-12-09T17:58:00Z&per_page=100":Connect to 192.168.XXX.XXX:443 [/192.168.XXX.XXX] failed: Connection refused (Connection refused); nested exception is org.apache.http.conn.HttpHostConnectException: Connect to 192.168.XXX.XXX:443 [/192.168.XXX.XXX] failed: Connection refused (Connection refused)**
        at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:580) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:545) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:466) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at com.capitalone.dashboard.collecteur.DefaultGitlabGitClient.makeRestCall(DefaultGitlabGitClient.java:92) ~[gitlab-git-collector-2.0.4-SNAPSHOT.jar!/:2.0.4-SNAPSHOT]
        at com.capitalone.dashboard.collecteur.DefaultGitlabGitClient.getCommits(DefaultGitlabGitClient.java:69) ~[gitlab-git-collector-2.0.4-SNAPSHOT.jar!/:2.0.4-SNAPSHOT]
        at com.capitalone.dashboard.collecteur.GitlabGitCollectorTask.collect(GitlabGitCollectorTask.java:98) ~[gitlab-git-collector-2.0.4-SNAPSHOT.jar!/:2.0.4-SNAPSHOT]
        at com.capitalone.dashboard.collector.CollectorTask.run(CollectorTask.java:63) ~[core-2.0.4-SNAPSHOT.jar!/:2.0.4-SNAPSHOT]
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) [spring-context-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_111]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_111]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_111]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_111]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to 192.168.XXX.XXX:443 [/192.168.XXX.XXX] failed: Connection refused (Connection refused)
        at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:142) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:319) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) ~[httpclient-4.3.6.jar!/:4.3.6]
        at org.springframework.http.client.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:91) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:569) ~[spring-web-4.1.7.RELEASE.jar!/:4.1.7.RELEASE]
        ... 15 common frames omitted

application.properties file:
gitlab.key=c+Dp9KHNhVg7ZPS2PoMIL
logging.file=./logs/gitlab.log
gitlab.cron=0 0/1 * * * *
gitlab.host=192.168.XXX.XXX
gitlab.protocol=http
gitlab.port=80
gitlab.selfSignedCertificate=false
gitlab.apiToken=ffGxDmVUG_onXXXXYYY
gitlab.commitThresholdDays=15

I'm guessing you don't have the latest changes.  The port and protocol support was only merged into master 3 days ago.  Have you pulled the new code since then?

@rob-miller-777
Looks like I pulled my code last week and started setup of HYGIEIA..  Are you sure no one has got this exception earlier? is this fixed in latest code? I still doubt.. But anyhow I will pull the code now and will have a test again now and update here..
Thanks,
Vishnu

Thanks @rob-miller-777
GitLab collector worked after I pulled the latest code..  Looks like now I have similar kind of problem with JIRA collector. Can you help me with this please?
Closing this and opening a new ticket for JIRA.

No problem.  Unfortunately I can't provide the same support for Jira, I haven't worked with that one at all since we don't actually have Jira here.  Let me know if you have any other gitlab questions though.

Thanks @rob-miller-777 ,
One quick question regarding git-lab is.. I dont see the widget getting updated automatically.. we are performing some commits on project and I have set the cron job property as 1min in my git-lab.properties file. But still I dont see them updated in widget.. Unless I click on edit and click on save.. then I'm able to see the updated results there.. any idea?

If you refresh the page, do you see the new data?  The dashboard and the collector are on different timers.  So even if the collector retrieves new data, you won't see it on the dashboard until the dashboard refreshes what it has by calling the UI.  If you don't see the data when you refresh the page, but you do see it when you update the configuration of the widget, my guess would be that you are running into a bug I found.  It seems like there is an issue with all widgets where if you have the same widget running for the same data on multiple dashboards, and one dashboard is either deleted, or removes that widget, it will disable that widget on all dashboards that widget is on.  So for example in Gitlab, if DashboardA and DashboardB both have an SCM widget looking at GitlabRepo1.  If DashboardB is either deleted, or changes that widget to look at GitlabRepo2, it will also disable it for DashboardA.


AutoSlugField doesn't handle nullable foreign keys

I'm trying to use AutoSlugField for a model that has a nullable ForeignKey as one of its identifiers, so I included the foreign key's slug as one of the populate_from values in my AutoSlugField:
    git_repository = models.ForeignKey(
        to="extras.GitRepository",
        blank=True,
        null=True,
        default=None,
        on_delete=models.SET_NULL,
        db_index=True,
        related_name="jobs",
        help_text="Git repository that provides this job",
    )

    slug = AutoSlugField(
        populate_from=["source", "git_repository__slug", "module_name", "job_class_name"],
    )

Unfortunately, when the foreign key is null, django-extensions throws an exception on save:
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 754, in save
    force_update=force_update, update_fields=update_fields)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 792, in save_base
    force_update, using, update_fields,
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 895, in _save_table
    results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 935, in _do_insert
    using=using, raw=raw,
  File "/usr/local/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 1254, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1396, in execute_sql
    for sql, params in self.as_sql():
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1341, in as_sql
    for obj in self.query.objs
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1341, in <listcomp>
    for obj in self.query.objs
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1340, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1291, in pre_save_val
    return field.pre_save(obj, add=True)
  File "/usr/local/lib/python3.6/site-packages/django_extensions/db/fields/__init__.py", line 274, in pre_save
    value = force_str(self.create_slug(model_instance, add))
  File "/usr/local/lib/python3.6/site-packages/django_extensions/db/fields/__init__.py", line 235, in create_slug
    slug = self.separator.join(map(slug_for_field, populate_from))
  File "/usr/local/lib/python3.6/site-packages/django_extensions/db/fields/__init__.py", line 232, in <lambda>
    self.get_slug_fields(model_instance, lookup_value),
  File "/usr/local/lib/python3.6/site-packages/django_extensions/db/fields/__init__.py", line 266, in get_slug_fields
    elem, lookup_value, attr, elem))
AttributeError: value slug in AutoSlugField's 'populate_from' argument git_repository__slug returned an error - None has no attribute slug

I was hoping that AutoSlugField would be "smart" enough to just skip over a nullable foreign key, much as it might do if a populate_from field were blank or empty.

The following workaround appears promising, in a local subclass of AutoSlugField:
    def get_slug_fields(self, model_instance, lookup_value):
        """Workaround for https://github.com/django-extensions/django-extensions/issues/1713."""
        try:
            return super().get_slug_fields(model_instance, lookup_value)
        except AttributeError:
            return ""


Add Task.WaitAll(IList)

Help me avoid an extra allocation.  Why do I need to call .ToArray on a list of tasks when calling WaitAll?  Here's a common pattern:
        List<Task> insertItems = new List<Task>();
        try
        {
            foreach(var carState in carStates)
            {
              var insert = ...
              Task task = _azureTable.ExecuteAsync(insert);
              insertItems.Add(task);
            }

            Task.WaitAll(insertItems.ToArray());

Sometimes I need to do this operation under a lock, making this pattern more of a perf problem.
Hopefully Stephen and company can come through with a minor API change quickly.  Other devs came up with this worse approach.
            Task.WhenAll(insertItems).ConfigureAwait(false).GetAwaiter().GetResult();

or a more elegant reading but more complicated approach:
            await Task.WhenAll(allTasks);

I can't imagine the latter two being as cheap as a properly implemented WaitAll.

@briangru is the issue still reproducible ? If so, is this .NET Framework or .NET Core ?

This repo is no longer actively monitored. Closing up old issues that have not had activity in while. If this is still an issue, please open a new issue in an appropriate repo listed in microsoft/dotnet#1275

This repo is no longer actively monitored. Closing up old issues that have not had activity in while. If this is still an issue, please open a new issue in an appropriate repo listed in microsoft/dotnet#1275


GitHub Repo Q&A Bot sample app error

Describe the bug
Attempt to download the microsoft/semantic-kernel repo using the "GitHub Repo Q&A Bot" sample app results in an error with the message: "Bad Request => Positive number required. (Parameter 'bufferSize') Actual value was 0.
To Reproduce
Steps to reproduce the behavior:

Clone the repo using macOS m1
Start the KernelHttpServer using func start --csharp command
Copy .env.example as .env and populate with Azure OpenAI completion and embeddings model details (as defaults)
Run yarn install && yarn start to start the sample app
Go through the setup (values should be defaulted)
Enter GitHub Respoitory URL: https://github.com/microsoft/semantic-kernel
Enter Branch Name: main

Expected behavior
Embeddings should be downloaded
Screenshots

Desktop (please complete the following information):

OS: macOS (M1)
IDE: VS Code
NuGet Package Version [e.g. 0.1.0]

Additional context
NodeJS and Azure Function Core Tools versions.
$ node -v
v18.7.0

$ func --version
4.0.5095

Which model are you using for embeddings? ada-002?

Which model are you using for embeddings? ada-002?

Correct. I've deployed the text-embedding-ada-002 model and set the deployment name to be the same name as the model.

@pauldotyu thanks for bringing this up, we have filed a bug on this and will take a look to see what is going on with it.

@craigomatic  can you take a look at this

@matthewbolanos  can you take a look and see if this repros for you?

Closing this for now, please reopen if needed.


(forums) Write user stories for forum admins (Burgess and Slovin)

This issue centers on creating detailed user stories for the admin user role within the board games website forums. We will investigate the unique requirements and challenges faced by admins, from moderating content, managing user roles, addressing reports, to overseeing general forum maintenance. By capturing the multifaceted tasks and responsibilities of an admin, we hope to ensure the platform's back-end capabilities are streamlined, intuitive, and efficient. The goal is to shape a platform where administrative tasks are not just manageable but are also efficient and effective, enhancing the overall health and quality of the forum.

I am posting the following user stories on how we can look at possible functionality for Admin users:
Managing Reports:
* Sarah logs in and sees a list of forums each with a number contained in a red bubble that shows how many reports have been made on that forum, to quickly identify where her attention is needed.
* Sarah organizes the forums by most recent report, rate of reports on that forum, and overall quantity of reports on that forum, to prioritize her moderation efforts accordingly.
Thread and Comment Moderation:
* Sarah clicks on a thread and sees a list of participants and a list of community violations within that thread, to take appropriate moderation actions.
* Sarah decides to delete a problematic thread, she is prompted with a confirmation before the thread is deleted to ensure accurate moderation.
* In another instance, Sarah decides to delete a derogatory comment and is prompted with a confirmation before the comment is deleted, to maintain a respectful discussion environment.
User Management:
* Sarah clicks on a user's profile and is taken to a page with two lists: one showing which forums they are on and comments made on those forums, and another listing community guideline violations and details about those violations, for a comprehensive understanding of the user's activity and behavior.
* Sarah bans a user from a thread due to disrespectful behavior, she is prompted with a confirmation before the ban is enacted to ensure accurate moderation.
* Sarah bans a user from commenting on the forum due to repeated guideline violations, to uphold the integrity and constructive nature of discussions on the forum.
Notification Management:
* Sarah receives notifications for new reports, mentions, or other important events within the forum, to respond in a timely manner.
Performance Monitoring:
* Sarah accesses analytics and performance metrics of the forum, to monitor and improve the forum's health and engagement over time.

Overall, great thoughts; any user story I don't comment on, I approve :) Will leave my comments below:
Managing Reports:

Sarah organizes the forums by most recent report, rate of reports on that forum, and overall quantity of reports on that forum, to prioritize her moderation efforts accordingly.

Is this a toggle which does all of this sorting as one operation, or is it up to her to apply those filters? Perhaps it could look like:
Sarah organizes the forums by most recent report. Not satisfied with this, she removes the filter and re-sorts the forums by highest post rate in the last 24 hours. She does a similar process with sorting criteria based on largest total posts on the forum.
User Management

Sarah clicks on a user's profile and is taken to a page with two lists: one showing which forums they are on and comments made on those forums, and another listing community guideline violations and details about those violations, for a comprehensive understanding of the user's activity and behavior.

This is sort of related to the registered user stories, but from the admin point of view, we may only want to consider a user part of a forum if they've commented on it somehow. My thoughts:
Sarah clicks on a user's profile and is taken to a page with two lists: one showing all of comments on every forum they've commented on, and another listing community guideline violations and details about those violations, for a comprehensive understanding of the user's activity and behavior.

Sarah bans a user from a thread due to disrespectful behavior, she is prompted with a confirmation before the ban is enacted to ensure accurate moderation.

We could specify she decides to do this after reviewing their account. Also, do we want to delineate between banning a user from a forum vs just a thread?
After reviewing a user's account  Sarah bans a user from a thread due to disrespectful behavior, she is prompted with a confirmation before the ban is enacted to ensure accurate moderation.

Sarah bans a user from commenting on the forum due to repeated guideline violations, to uphold the integrity and constructive nature of discussions on the forum.

Can be omitted because the previous story would catch this unless we want to distinguish between bans on a thread vs a forum
Performance Monitoring

Sarah accesses analytics and performance metrics of the forum, to monitor and improve the forum's health and engagement over time.

We should specify when she views these analytics:
When visiting any forum page Sarah sees analytics and performance metrics for that forum, to monitor and improve the forum's health and engagement over time.

Managing Reports:
*Sarah organizes the forums by most recent report. Not satisfied with this, she removes the filter and re-sorts the forums by highest post rate in the last 24 hours. She does a similar process with sorting criteria based on the largest total posts on the forum, to prioritize her moderation efforts accordingly.
Thread and Comment Moderation:
*Sarah clicks on a thread and sees a list of participants and a list of community violations within that thread, to take appropriate moderation actions.

When Sarah decides to delete a problematic thread, she is prompted with a confirmation before the thread is deleted to ensure accurate moderation.
When Sarah decides to delete a derogatory comment, she is prompted with a confirmation before the comment is deleted, to maintain a respectful discussion environment.

User Management:
*Sarah clicks on a user's profile and is taken to a page with two lists: one showing all the comments on every forum they've commented on, and another listing community guideline violations and details about those violations, for a comprehensive understanding of the user's activity and behavior.
*After reviewing a user's account, Sarah bans the user from a thread due to disrespectful behavior, she is prompted with a confirmation before the ban is enacted to ensure accurate moderation.
Notification Management:
*Sarah receives notifications for new reports, mentions, or other important events within the forum, to respond in a timely manner.
Performance Monitoring:
*When visiting any forum page, Sarah sees analytics and performance metrics for that forum, to monitor and improve the forum's health and engagement over time.

Since the suggestions have been implemented and there are no additional comments, I am finalizing these admin user stories for now and adding them to the wiki. If anyone has any additional comments in the future, we can reopen this issue and visit the stories per need basis.
As for task handling, I came up with the user stories, along with adding them into the wiki. Ben Burgess helped edit the user stories after initial creation.

Issue Score: Excellent
Comments:
Great job! Appreciate you all keeping the back and forth for production and feedback on the issue.
This issue did last 2 sprints, in the future if you have tasks that you carried over from the previous sprint and feel are close to done, do them right after the team meeting.
Overall, great job and keep going!


Reboot with Monit

How can be possible to restart the process with Monit? I use a Pi and everything is in virtual.
I try in many way but it's not working.

This is the bug/issue tracker for Home Assistant. Please use the forum for questions about installation, setup, and configuration.
If it's a bug, please re-open the issue with the issue template filled.


Prevent premature bailout when encountering permission-dened files/dirs

Is there a way to have this tool continue searching after it encounters a file that it cannot read?  I have to add --ignore repeatedly until it continues successfully with all accessible directories.  This makes it difficult to search configuration directories where permissions for a user are not root, but should allow some level of read-ability.

I also like to have this feature.


⚠ Turnos 24x7 has degraded performance

In abdcb35, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 2177 ms

Resolved: Turnos 24x7 performance has improved in 261b70c.


Setting token: 'ENV["VAULT_TOKEN"]' doesn't work

@petems How is the ENV["VAULT_TOKEN"] supposed to be set? I have exported the token as export VAULT_TOKEN=<token_here> and in my hiera.yaml file, I have token: 'ENV["VAULT_TOKEN"]' but when I run puppet, it fails to lookup the key in vault. Setting the token: '/path/to/token' works however.
Any thoughts on why setting token: 'ENV["VAULT_TOKEN"]' doesn't work? or I'm I doing something wrong?

It has to be set within the context of the Puppet run as an environment variable, not hiera.
So this could be done as export VAULT_TOKEN=abc in either

/etc/sysconfig/puppet on RHEL and its derivatives
/etc/default/puppet on Debian, Ubuntu, and their derivatives

Or in the Environment/EnvironmentFile setting in the Puppet systemd unit file.

Thank you for the quick response.
I am using Ubuntu and on puppet enterprise. I went into /etc/default/pe-puppetserver and added export VAULT_TOKEN=<token here> Do I need to set a value in token field like in the hiera sample below. As in where do I set ENV["VAULT_TOKEN"]. I am sure I am missing something but not sure what I am doing wrong
---

version: 5

hierarchy:
  - name: "Hiera-vault lookup"
    lookup_key: hiera_vault
    options:
      confine_to_keys:
        - '^vault_.*'
        - '^.*_password$'
        - '^password.*'
      ssl_verify: false
      address: https://vault.foobar.com:8200
      token: 'ENV["VAULT_TOKEN"]'
      default_field: value
      mounts:
        some_secret:
          - %{::trusted.certname}
          - common
        another_secret:
          - %{::trusted.certname}
          - common

Remove the token field completely from the config, it will look for the environment value automatically:
---

version: 5

hierarchy:
  - name: "Hiera-vault lookup"
    lookup_key: hiera_vault
    options:
      confine_to_keys:
        - '^vault_.*'
        - '^.*_password$'
        - '^password.*'
      ssl_verify: false
      address: https://vault.foobar.com:8200
      default_field: value
      mounts:
        some_secret:
          - %{::trusted.certname}
          - common
        another_secret:
          - %{::trusted.certname}
          - common

When I remove the token field completely and then run puppet agent -t I get the below error:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, [hiera-vault] no token set in options and no token in VAULT_TOKEN

Ok, looks like you're right: For Puppetserver the variable has to be set in the /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf file:
I did a quick test now and it worked for me:
https://puppet.com/docs/puppetserver/latest/config_file_puppetserver.html
environment-vars: { "VAULT_TOKEN" : ${VAULT_TOKEN} }

This will mean that it will use the value from the exported environmental setting within the JRuby run:
[root@puppet vagrant]# cat /etc/sysconfig/puppetserver | grep TOKEN
VAULT_TOKEN=s.2NwgupDg5BRSBEy4Gya3kkFR
[root@puppet vagrant]# cat /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf | grep TOKEN
    environment-vars: { "VAULT_TOKEN" : ${VAULT_TOKEN} }
[root@puppet vagrant]# cat token.rb
puts "Vault token is #{ENV['VAULT_TOKEN']}}"
[root@puppet vagrant]# puppetserver ruby token.rb
Vault token is s.2NwgupDg5BRSBEy4Gya3kkFR}

You'll need to restart the puppet and puppetserver processes after making the changes also.

So I have set export VAULT_TOKEN=<token_here> in /etc/default/pe-puppetserver and also set environment-vars: { "VAULT_TOKEN" : ${VAULT_TOKEN} } in /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf. Restarted puppet server and puppet but I keep getting the error below:
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, [hiera-vault] no token set in options and no token in VAULT_TOKEN

Can you run this test for me:
$ cat /etc/sysconfig/pe-puppetserver | grep TOKEN
$ cat /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf | grep TOKEN
$ echo 'puts "Vault token is #{ENV['VAULT_TOKEN']}}"' > token.rb
$ pe-puppetserver ruby token.rb
$ pe-puppetserver version

Below are the outputs based on the commands you wanted me to run. Please not that, setting environment-vars: { "VAULT_TOKEN" : ${VAULT_TOKEN} } in /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf causes the puppet server to fail to start and each time puppet runs, it fails.
$ cat /etc/default/pe-puppetserver | grep TOKEN
export export VAULT_TOKEN=<token_here>

$ cat /etc/puppetlabs/puppetserver/conf.d/pe-puppet-server.conf | grep TOKEN
environment-vars: { "VAULT_TOKEN" : ${VAULT_TOKEN} }

$ echo 'puts "Vault token is #{ENV['VAULT_TOKEN']}}"' > token.rb (no output)

$  puppetserver ruby token.rb
NameError: uninitialized constant VAULT_TOKEN
  const_missing at org/jruby/RubyModule.java:3748
         <main> at token.rb:1
$ puppetserver version
puppetserver: 'version' is not a puppetserver command. See 'puppetserver --help'.

$ pe-puppetserver version
pe-puppetserver: command not found

Let me know if there is anything else that you would like for me to try. Thanks!

@tenajsystems I think you have a double export command in your /etc/default/pe-puppetserver, could be a problem with puppetserver start failure. There is also a quote escaping trap in the echo command posted above. This simplifies things a bit:
echo "puts \"Vault token is #{ENV['VAULT_TOKEN']}\"" > token.rb

Btw adding the environment-vars map in /etc/puppetlabs/puppetserver/conf.d/puppetserver.conf worked for me too for Puppetserver 5.3.

Thank you. I decided to just have the token in a text file.


Utils.makeInt32Range is implemented incorrectly

This has been found by DaPorkchop_ while working on another project
This method:
https://github.com/SpongePowered/noise/blob/213f04e0fc78bd19160c5700981b0620f45e9f98/src/main/java/org/spongepowered/noise/Utils.java#L114-L122
has been originally ported from the following C code in libnoise:
  inline double MakeInt32Range (double n)
  {
    if (n >=<PHONE_NUMBER>.0) {
      return (2.0 * fmod (n,<PHONE_NUMBER>.0)) -<PHONE_NUMBER>.0;
    } else if (n <= -1073741824.0) {
      return (2.0 * fmod (n,<PHONE_NUMBER>.0)) +<PHONE_NUMBER>.0;
    } else {
      return n;
    }
  }

But because of operator precedence in java, the java code is actually equivalent to this
    public static double makeInt32Range(double n) {
        if (n >=<PHONE_NUMBER>.0) {
            return ((2.0 * n) %<PHONE_NUMBER>.0) -<PHONE_NUMBER>.0;
        } else if (n <= -1073741824.0) {
            return ((2.0 * n) %<PHONE_NUMBER>.0) +<PHONE_NUMBER>.0;
        } else {
            return n;
        }
    }

Where in the original C code, modulo should take precedence.
For values of n between k *<PHONE_NUMBER> and  k *<PHONE_NUMBER> + 536870912  for integer k >= 1 (and similar for negative range) this just happens to output the same values, but otherwise for n ><PHONE_NUMBER> the result will be always negative (and similarly for n < -1073741824 the result will be always positive) instead of repeating the entire range from -1073741824 to<PHONE_NUMBER>.
Changing this now may be considered a breaking change as there could be terrain generators that would generate different terrain with this fixed.

One solution is to deprecate the existing method, and introduce a new one with the proper implementation. Another is to change this on a breaking version.

We already have the beginnings of a 'compatibility mode' in https://github.com/SpongePowered/noise/pull/20 -- that needs to be changed to not modify global state, and the compatibility mode could additionally include this behaviour change.


Restore 8000 port and add -browserify polyfills #58

#58

You have selected the 8000 port, but do we need to use the 8080, or API team changed that?

https://github.com/belgio99/smartfactory/blob/63a438869721a9d9370f91466154297a27757272/api/src/constants.py#L6


Feature/offline checking

This adds timeout logic for the request timeouts after 20 secs (and by default assume the user to blame)
Also adds a Connectivity Context that can query the webapp server every 120 secs to check if it can still reach the "internet".

OK a number of things about this one...
First of all I really don't think polling is something that we want to be adding to bedrock out of the box, it's something that should be avoided if at all possible.
Fortunately the browser can now actually determine it's own online state with the online/offline. This is actually something I've just come to learn about recently and have implemented for one of our projects.
Secondary to this, offline support is tricky. Just checking for connectivity is often not enough but involves more deep integration with service workers, caching, and a lot more. In most cases it is highly contextual to the nature of the app, and implementation will vary greatly depending on this. In the first place offline "support" (whatever that may mean) assumes that bedrock usage will be as a "web app" (as opposed to a traditional site). I think it's an assumption on our part based on usage but shouldn't be the default for bedrock out of the box. I would rather not see the overhead for projects that not only don't use it but also arguably should not be checking this state in the first place.


test-branch/execute-job/quoted-authorization/a6162308-0aa0-4bbe-89e7-17d4fb9568d0

PR for testing 786c697426c2b35c9af79e9f3486e370fd9d6b4a

/canonical/self-hosted-runners/run-workflows 786c697426c2b35c9af79e9f3486e370fd9d6b4a


docs: Support Kubernetes API connector for Workflows

Per b/297556224

Looks good from a Kubernetes perspective. Approved.


ddl: Fix zero safepoint make schema gc run repeatly

What problem does this PR solve?
Issue Number: close https://github.com/pingcap/tiflash/issues/8356
Problem Summary:
After a new tidb cluster deployed, there is an interval that PD will return gc safepoint with 0
>  tiup ctl:nightly pd -u [<IP_ADDRESS>:6540](http://<IP_ADDRESS>:6540/) -i
Starting component `ctl`: /DATA/disk1/ra_common/.tiup/components/ctl/v7.6.0-alpha-nightly-20231112/ctl pd -u [<IP_ADDRESS>:6540](http://<IP_ADDRESS>:6540/) -i
» service-gc-safepoint
{
  "service_gc_safe_points": [
    {
      "service_id": "gc_worker",
      "expired_at":<PHONE_NUMBER>854775807,
      "safe_point":<PHONE_NUMBER>56646400
    }
  ],
  "gc_safe_point": 0 <-- tiflash use this value
}

This will lead to SchemaSyncService::gc running repeatedly. This results in lots of useless logging and getting gc safepoint from pd frequently.
What is changed and how it works?

If tiflash receives a gc safepoint == 0 from PD, it skips the schema gc task
Refine some logging for adding/removing schema task for keyspace

Check List
Tests

[x] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/run-all-tests

/run-all-tests

/run-unit-test


nextest: produce output in result even when the command fails

I use cargo-nextest to produce a JUnit-style XML report. If all tests succeed inside Nix with crane via cargo-nextest, result/target/nextest/ci/rust-junit.xml contains the result file. The problem is: This file is also needed, if cargo-nextest fails. I tried nix-build --keep-failed --keep-going release.nix -A test but there is still no result folder.
A working workaround is adding || true:
  cargoNextest = crane.cargoNextest (commonArgs // {
    inherit cargoArtifacts;
    # working workaround
    cargoNextestExtraArgs = "--profile ci || true";
  });

but it is inconvenient, as I still need the test command to fail.
I'd like to:

ask for advice and
an update of the documentation. (I can submit an PR, once the solution is clarified) :)

I've experimented with the following code:
  nextestReportWrapped = stdenv.mkDerivation {
    name = "nextest-report-wrapped";
    dontCheck = true;
    dontInstall = true;
    broken = true;
    inherit src;
    outputs = [ "out" ];
    buildPhase = ''
      mkdir -p $out/target/nextest/ci
      cp ${cargoNextest}/target/nextest/ci/rust-junit.xml $out/target/nextest/ci
      if grep -q 'failures="[1-9][0-9]*"' $out/target/nextest/ci/rust-junit.xml;
      then
        echo "FAILURE!"
        exit 1
      else
        echo "NO FAILURE!"
      fi
    '';
  };

But, no matter what I've tried, the result folder was never created.

Okay, so far the best approach I could find is the following:

two Nix attributes that execute cargo nextest, but one with || true
in CI, execute the following:# never fails but produces the junit.xml file
nix-build nix/release.nix -A particle.test-ci
# always fails if a test fails, but has no output
nix-build --no-out-link nix/release.nix -A particle.test >/dev/null 2>/dev/null

It's worth noting that nix build --keep-going will continue trying to build unrelated derivations; if a derivation's build script fails, Nix won't install anything (and any other derivations which depend on it will not be built either).
You may want to try adding an additional postInstall hook which installs the nextest files (outside of the compressed tarball of target) in addition to the || true short circuit
  craneLib.cargoNextest (commonArgs // {
    inherit cargoArtifacts;
    # working workaround
    cargoNextestExtraArgs = "--profile ci || true";
    postInstall = ''
      cp ./target/nextest/ci/rust-junit.xml $out/rust-junit.xml
    '';
  });

I suppose it may be worth exposing an allowFailure flag on cargoNextest which automatically does the short circuit when set...

Another thing we could do is make the package runnable by including a bin/$pname script in the test derivation that returns the exit code of cargo test/cargo nextest. Maybe print out the path to test artifacts or copy them into cwd as well. This way you could still simply nix run .#tests in CI and easily store the test reports.

That would be nice! That's a good idea.


many changes needed

[1]  ImportError
running $ python app.py  after installation of required packages gives error ->
Traceback (most recent call last):
  File "app.py", line 6, in <module>
    from src.common.database import Database
ImportError: No module named src.common.database

which can be fixed by moving app.py to root of directory

[2] jinja2.exceptions.TemplateNotFound
after moving app.py to root dir , running app.py gives error ->
File "/home/ben/.local/lib/python2.7/site-packages/flask/templating.py", line 86, in _get_source_fast     raise TemplateNotFound(template) TemplateNotFound: home.html

which can be fixed by moving folder /src/templates to same directory as app.py & creating home.html in template folder with this lines, so that it extends base.html->

{% block content %}
<heading : Welcome to ImageLab homepage>
    <descripition : Machine learning supported web-base image labelling tool for researcher.>
<links to login, register, project, about etc pages
**<content homepage should have>**
{% endblock %}

there are more things which needs improvement and fixes, such as ->

renaming Register.html to register.html in templates folder.
removing } from 162th line of style.css.
removing duplicates from style.css by folowing DRY rule (Do not Repeat Yourself) & removing empty rulesets
adding viewport as ->
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
styling grid properly.
changing href of FAB button from google-homepage to some function which adds project or user on dashboard.
moving  (navbar) to base.html from project-manager, profile-manager.html .
changing href of  imagelab text-logo # to /  in <header>, so by clicking , it will take to homepage.
etc.

i have made a branch in my forked repo , including these changes mentioned above, which i call testy
submission for GCI 2018 task.

some screenshots
Login page

home page, with added links to other pages and description


I would like a Mentor

Question: Have you read the mentoring guide? Please only submit this request for general mentoring (not GSoC).
Answer: Yes I have read the mentoring guide.
What is your background? Any experience with Go, Kubernetes, React, Typescript, etc.?
Answer: I am currently a beginner in Kubernetes. I am ready to learn these technologies under a mentor.
Is there any particular issue you'd like to work on? You may want to check out the list of good first issues.
Answer: **I would like to work with issue #7920 **
Do you want to work with your mentor async (i.e. by Slack messaging or issue comments), or sync (e.g. using Zoom video)? Please include your time-zone if you want to work sync.
Answer: Async

@a-muk would you like a mentor? I wonder if @dpadhiar might be interested in helping you with this UI change?

Thank you for replying. I would surely like a mentor.

@dpadhiar say he does not know much React. But I can help. It is a steep learning curve!
To start out, I suggest learning some basics to get started:

https://go.dev/tour/welcome/1 is a really great intro to Golang (allow 2-3hrs)
https://reactjs.org/tutorial/tutorial.html is the React tutorial

Let me know your thoughts.

Thank you. Do you suggest me to start with both of them together now?

It is up to you. You might find the React one more useful.

Okay. Thank you.

How's it going?

Excellent! Let me know if you need any help.


Crash at startup (apple silicon) kap 3.5.4 macOS 12.2

macOS 12.2
kap 3.5.4
Unhandled Promise Rejection
Error: Command failed: /Applications/Kap.app/Contents/Resources/app.asar.unpacked/node_modules/mac-screen-capture-permissions/screen-capture-permissions
spawnSync /Applications/Kap.app/Contents/Resources/app.asar.unpacked/node_modules/mac-screen-capture-permissions/screen-capture-permissions Unknown system error -86
at Function.module.exports.sync (/Applications/Kap.app/Contents/Resources/app.asar/node_modules/mac-screen-capture-permissions/node_modules/execa/index.js:168:25)
at exports.hasScreenCapturePermission (/Applications/Kap.app/Contents/Resources/app.asar/node_modules/mac-screen-capture-permissions/index.js:27:25)
at ensureScreenCapturePermissions (/Applications/Kap.app/Contents/Resources/app.asar/dist-js/common/system-permissions.js:64:23)
at /Applications/Kap.app/Contents/Resources/app.asar/dist-js/index.js:102:65

Duplicate of #1095


Poetry does not bootstrap itself in pyproject.toml

[x] I have searched the issues of this repo and believe that this is not a duplicate.
[x] I have searched the documentation and believe that my question is not covered.

Feature Request

Currently the poetry repository uses pyproject.toml without specifying a build-backend - this means that when doing pip install . (like when checking out a PR) pip will use the default setuptools backend and nothing actually gets installed. That looks like
Processing /home/chris/projects/poetry/poetry
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: UNKNOWN
  Building wheel for UNKNOWN (PEP 517) ... done
  Stored in directory: /tmp/user/1000/pip-ephem-wheel-cache-f1m9fp28/wheels/23/67/c9/7f11a19038b538fe2c2cb58e2cec1da0b080c096e213f4b66d
Successfully built UNKNOWN
Installing collected packages: UNKNOWN
Successfully installed UNKNOWN-0.0.0

Right now there is a package that would allow Poetry to import itself as part of the build (it is the same thing that flit does here):
[build-system]
requires = ["intreehooks"]
build-backend = "intreehooks:loader"

[tool.intreehooks]
build-backend = "poetry.masonry.api"

With this change, installing poetry from latest git would be as easy as pip install . inside the cloned repository.
Once pypa/pep517#46 gets into pip proper, then backend-path could be used instead.

This is still relevant.


Test cases for blobs module

Right now we do not have any test coverage for /docker/v2/blobs module, this issue is to cover that
Move "        hex::decode(&digest.get(7..).unwrap()).unwrap().as_ref(),
" in new function

As part of the testing,
these hardcoded urls should become injectable
"/tmp/registry/docker/registry/v2/repositories/{}/_manifests/tags/{}/current/link",
"/tmp/registry/docker/registry/v2/blobs/sha256/{}/{}/data",
"http://localhost:7878/v2/{}/manifests/sha256:{}",
"/tmp/registry/docker/registry/v2/repositories/{}/_uploads/{}/data",
"/tmp/registry/docker/registry/v2/repositories/{}/_uploads/{}",
These urls need to be derived from a configuration setting and the processing needs to be relative to that. The test should allow me to specify a different starting directory but still the code should work.


Widget-I can't access it Please resolve.

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

I have huawei mate 20 PRO.

Duplicate #154


Gitlab feed token

Description
BASED ON: #354

Added Gitlab feed token pattern
Updated benchmark skores with new markup https://github.com/Samsung/CredData/pull/31
TODO: remove temparlly benchmark

How has this been tested?
Please describe the tests that you ran to verify your changes.

[ ] Test A
[ ] Test B

@csh519
#354 may be reviewed as base PR


Helm upgrade output with incorrect values.

Output of helm version:
2.12.3 server
2.12.3 client
Output of kubectl version:
1.12.5
Cloud Provider/Platform (AKS, GKE, Minikube etc.):
IBM
Hello,
We have some question/issue when execute:
helm upgrade --debug --install -f values.yaml
and if we have some incorrect values file and helm doing first install it will give detailed Error, but if release have been already in cluster and helm tring do upgrade with incorrect values is doesn't give detailed Error.
Looks like executing helm install do lint but not in helm upgrade...

Do you mind providing an example of a values file with incorrect values that I can use for test purposes?

I'm going to close this ticket due to inactivity, but please re-open if this still needs to be addressed. Thanks!


Uncaught Error: The React Flow parent container needs a width and a height to render the graph.

I have copied the overview example into my project but I am getting the following error.
Stacktrace
cjs.js:12 Uncaught Error: The React Flow parent container needs a width and a height to render the graph.
    at updateDimensions (cjs.js:12)
    at cjs.js:12
    at commitHookEffectListMount (react-dom.development.js:19731)
    at commitPassiveHookEffects (react-dom.development.js:19769)
    at HTMLUnknownElement.callCallback (react-dom.development.js:188)
    at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
    at invokeGuardedCallback (react-dom.development.js:292)
    at flushPassiveEffectsImpl (react-dom.development.js:22853)
    at unstable_runWithPriority (scheduler.development.js:653)
    at runWithPriority$1 (react-dom.development.js:11039)
    at flushPassiveEffects (react-dom.development.js:22820)
    at react-dom.development.js:22699
    at workLoop (scheduler.development.js:597)
    at flushWork (scheduler.development.js:552)
    at MessagePort.performWorkUntilDeadline (scheduler.development.js:164)

I have set width and height of parent container as 100% each. still facing this issue. What am I missing here?

Figured it out. Silly mistake on my part.

hey @itsrimzz1 can you tell me what was the silly mistake on that? I'm kinda stuck here on this warning.
thanks in advance

I solved it by doing as the error said. Setting the parent element's width and height. where parent element being the element enclosing <ReactFlow {...props}/> component. if it still doesn't work. Try setting the width and height of grandparents as well. My mistake was that I thought i set the width and height both, but actually missed.

hey @itsrimzz1 , thanks for the response.
I tried the above things, not just for the parent but all the grandparents, that doesn't seem to workout.
well, I don't get an error but a warning pops-up always, which is causing a small edge disappearance problem.
any other ideas you can suggest?

i got this issue and here is what resolved it.
remove the height 100% in your css file for reactflow-wrapper class.
i was testing using the dnd example folder and thats what solved it. i didnt need to add height for any parent class.
@itsrimzz1
//react-flow/example/src/DragNDrop/dnd.css
.dndflow .reactflow-wrapper {
    flex-grow: 1;
    /* height: 100%; */
}

My empty test app looks like this.
DnDFlow is from the example folder
react-flow/example/src/DragNDrop/
import logo from "./logo.svg";
import "./App.css";

import DnDFlow from "./dnd";

function App() {
  return <DnDFlow />;
}

export default App;


Resolve respecting Ruby versions without ruby in the Gemfile

This is an extension of #4650 that adds the currently running Ruby as the Ruby that is being resolved against, making it possible to install (and lock to) usable versions of gems even in Gemfiles that don't explicitly declare a Ruby version.

👎🏻 for the same reasons I gave last year.

@segiddins can you repeat your reasons? Sorry for the hassle, I just want to be really sure that I'm understanding your position.
Last year we didn't have the ability to lock to a Ruby version, and we didn't have a diagnostic error message. The big reason that I think we need to ship this, or something like this, is because users expect gem install and bundle install to respect the currently running gem version.
As far as I'm concerned, the ruby DSL method is a hack that we should get rid of, and handle Ruby versions like we're planning on handling Bundler versions with a locked version and an update flag. When combined with lockable Ruby versions and a resolver-style error message that clearly explains conflicts if they come up, I think this is the most-expected-least-surprising implementation for this feature.
Thoughts?
/cc @RochesterinNYC @TimMoore @andremedeiros

I'd like to see/read through the historical context on this if it's in an issue/PR or somewhere?

https://github.com/bundler/bundler/pull/4160

@segiddins your objections in #4160 don't seem to take the use case of a gem that supports a range of ruby versions into account (as detailed in https://github.com/bundler/bundler/pull/4160#issuecomment-188674878). I currently handle this using conditionals in the Gemfile, which is not ideal. Any thoughts on that particular use case?

@segiddins as a concrete case of my previous comment, my memory_test_fix gem supports Rails 4.1, 4.2 and 5.0. Builds are failing on Travis because Bundler won't install a compatible version of activesupport on older Rubies: https://travis-ci.org/mvz/memory_test_fix/jobs/142714833.
It seems to me the two use cases of Bundler are in conflict here:

On the one hand, there is the 'app' use case, which requires Gemfile.lock to be checked into version control. This is the case where you want to be sure your installations will succeed in production, and this is the case you are defending.
On the other hand, there is the 'gem' use case. This is the case where Gemfile.lock should not be checked in, and each developer or CI environment should be free to satisfy the dependencies in a way that matches the installed Ruby version and gems.

Bundler has always catered to both use cases, so I think the question is how can Bundler help the second use case without gem developers resorting to ad-hoc logic in their Gemfiles and without damaging the needs of the first use case?

@mvz in bundler 2, bundler will fall back to the ruby version requirements in the gemspec from the gemspec dsl call

@segiddins Maybe I'm missing something, but I don't immediately see how that is going to help?

because it means bundler will resolve respecting the ruby versions your gem supports

Ah, but that is not the problem. Instead, I need it resolve respecting the ruby versions other gems support together with the currently running Ruby version. In the concrete example given above, I need it to pick activerecord and friends < 5.0 on Ruby 2.1, and activerecord 5.0 on Ruby 2.2 and above.
I am currently experimenting with simply putting
ruby RUBY_VERSION

in the Gemfile. I think this does exactly what I want but it feels like a hack.

I think this does exactly what I want

No, it seems the current Bundler just ignores this :cry:.

ah but rubygems' own gem install doesnt do that, so installing from a clean ruby install would fail in that case :/

rubygems' own gem install doesnt do that

Indeed you are right :disappointed:. I guess I'll have to rethink what versions of Rails and Ruby my gem should support.
Anyway, @segiddins, thanks for your responses, they really helped clear things up for me.

I think we can address all of these concerns simultaneously by resolving against the currently running ruby version and then writing that ruby version into the lockfile, even if you don't have ruby in your Gemfile. It breaks backwards compatibility, so we would have to ship it as a config option until the next major release, but it seems to address both the app and gem use cases at the same time.

@indirect there would still be the problem of gem install not taking the running ruby version into account when selecting dependencies.

@mvz this is the Bundler issue tracker, we can fix gem install in a separate ticket on the RubyGems tracker. :)

I just read through #4160 - We are in a similar boat as https://github.com/bundler/bundler/pull/4160#issuecomment-188674878 where we test against multiple versions of Ruby to ensure compatibility.
Our use case is that we would expect different behavior based on the currently running Ruby version and we can't add the ruby version to the Gemfile as that would break support across multiple versions of Ruby (currently 1.9.x, 2.0.0, 2.1.x, etc).
We are currently resolving to workarounds where we need to test against older versions of Ruby, and as more things come online with ruby ~> 2.0, we are going to be seeing this more and correcting it with a conditional as each gem gets updated (e.g. json_pure today on a .z release - https://github.com/puppetlabs/puppetlabs-dsc/pull/220/files#diff-8b7db4d5cc4b8f6dc8feb7030baa2478R48)
Would it be possible to take a second look at this?
Similar to @indirect I find it surprising that Bundler doesn't natively support this option already. Since not everyone has the same use case and there is some consternation about this, allow it with a bundler configuration value?

@ferventcoder this isn't abandoned, we are still working on it. In the meantime, you can likely handle your current needs with either ruby File.read(".ruby-version") or ruby RUBY_VERSION in your Gemfile.

ruby RUBY_VERSION

Interesting. That does seem like a nice workaround (not sure how I missed that before).

@ferventcoder this isn't abandoned, we are still working on it. In the meantime, you can likely handle your current needs with either ruby File.read(".ruby-version") or ruby RUBY_VERSION in your Gemfile.

Unfortunately this doesn't appear to be a valid solution.  ruby RUBY_VERSION doesn't do anything for limiting the resolved versions of other gems in the Gemfile.
Added ruby RUBY_VERSION as the first line in the Gemfile. Using Bundler 1.6.3.
$ bundle install
[..snip..]
Gem::InstallError: json_pure requires Ruby version ~> 2.0.
An error occurred while installing json_pure (2.0.2), and Bundler cannot continue.
Make sure that `gem install json_pure -v '2.0.2'` succeeds before bundling.

Keep in mind that json_pure comes in as a non-restricted dependency from a different Gem. I'm happy to raise another issue for this if this is a bug.

@ferventcoder The first version of Bundler that is even able to respect required ruby versions is 1.12. Please test on the latest version before complaining about things that "don't work".

@indirect apologies. I thought I read in the documentation that it was v1.2 that respected the setting, but perhaps I read the documentation incorrectly.

@ferventcoder The ruby Gemfile method was introduced in Bundler 1.2, but it was not until the new index format (first supported in Bundler 1.12) that Bundler even knows whether a gem has a required ruby version or not. You will need to use Bundler 1.12+ at a minimum for Bundler to be able to respect required_ruby_verison in any gems.

@indirect I'll open a new ticket.

this is causing fairly significant pain as gems like activesupport and rack drop support for ruby 2.1 and we're picking those gems up transitively.  we're having to add pins for the transitive deps.   we also want to drop support for 2.1 ourselves, but want users with existing working Gemfile's on ruby 2.1 to not be broken when we release gems which drop support.  telling everyone to run around and add ruby "2.1.9" to all their Gemfiles is less than pleasant.
and @segiddins the fallback to the gemspec isn't helpful because the workflow that people have is a typically application workflow where there is no gemspec and no published gem and no required_ruby_version.  mostly these are Gemfiles that wrap up an app and people are bundle exec'ing their tools.

So, and I'd like to strenuously argue that the existing behavior is definitely wrong.
 % cat Gemfile
source 'https://rubygems.org'

gem "activesupport"
% bundle --version
Bundler version 1.13.0.rc.1   # <--- master from yesterday
% bundle update
Fetching gem metadata from https://rubygems.org/..............
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
activesupport-5.0.0 requires ruby version >= 2.2.2, which is incompatible with the current version, ruby 2.1.10p492

Literally the only piece of information bundler has here about what ruby version I want is the ruby version that I'm running bundler from -- but it helpfully ignores that and attempts to create a bundle that can't install on the version of ruby that I'm running and it fails.
That looks to me like the definition of bad UX.
I would agree that explicit ruby lines in the Gemfile or a required_ruby_verison in the gemspec should always override automatically picking up the ruby version, and that maybe there should be a switch to turn this behavior off to deal with edge cases, but this is the common case, and bundler clearly gets it wrong and this affects users.

telling everyone to run around and add ruby "2.1.9" to all their Gemfiles is less than pleasant.

And as you see from https://github.com/bundler/bundler/issues/4819, asking folks to add ruby "2.1.9" may not work until master gets released (looks like v1.13.0), which means there really isn't a pleasant workaround for this situation.

Even on master, though, this behavior is fairly infuriating.   Its also not going to go away permanently, and this argument will recur predictably every time we go through another ruby deprecation cycle.  It'll quiet down again later in the year, but next year when ruby 2.2.x falls off support we'll be right back here again.

@lamont-granquist you're pushing up pretty hard against the edge of the code of conduct right now. Feedback is helpful, telling us that you're infuriated by inexcusably bad UX is not okay and will result in a ban if you continue.
To reiterate: Since 1.0, it has been literally impossible (based on the information Bundler has from the server) to know that installing a gem would fail because of the current ruby version. That information was not available until the moment the gem was already downloaded for installation, and we failed as fast as we were able to.
Now that Bundler has ruby version information (a brand new development, after three years of work!), we can try to resolve this problem in a more user-friendly way. This PR is one option for solving that problem.
Open source means that you are empowered to contribute time or money to fixing problems. Contributing no money and no time, but angrily complaining that we haven't done enough free work for you yet? Not cool.

@indirect - I believe @lamont-granquist is just sharing his gut emotional response to suggest there are other users frustrated by having to deal with versioning issues instead of moving forward with getting more important work done.
Versioning is an advanced hardcore subject, so if users have to deal with it, it can be frustrating.
That's why you're such a hero to me, @indirect - these changes will be a huge boost to the Ruby community.
Thank you @lamont-granquist for your insights here. Just make sure than whenever you're describing your frustrations, you do it in a way where people don't see it as an attack. I know you just want to say how important these changes are (and how delighted you'll be once they're solved) - just make it clear that you're just describing your frustrations that you believe other users share. (And make it first clear that you aren't frustrated with anyone here and you appreciate the work already done here).

@segiddins - correct me if I'm wrong: I think the case you're arguing for is when the Gemfile.lock exists.
I believe a Ruby version should always be in a Gemfile.lock. It's like there's this idea in the Ruby community that a given gem should work on as many Ruby interpreter versions as possible.
Being a runtime language, Ruby makes this possible. But it's somehow become a requirement.
The biggest danger I see is: people having a crash during runtime due to running a bad Ruby and gem version combination. Gem library writers avoid specifying a required_ruby_version to avoid the flak they'd get from breaking CI builds (for example). That's not a good quality practice (failing CI builds are better than crashes in production).
Refusing to install on a Ruby that conflicts with a gem's required Ruby - that's huge progress already.
The biggest frustration: that users don't have a suggested way of dealing with an installation problem like this. They don't know where the fix should be, because they first assume that Bundler is working as designed. (Most people are oblivious to the work being done here right now).
I believe the current running Ruby is fundamental, because Ruby project workflows have usually no notion of "cross-compiling" (e.g. using Ruby 2.3.1 to install Ruby 2.1 dependencies).
I think Bundler should immediately abort if a Gemfile.lock was created with a different Ruby version. At least for now until there are "meta-Ruby" tools to do this. (How to define version Ruby constraints and test them to generate a project setup).
FWIW, I created https://github.com/e2/ruby_dep. One of the main drivers was to get people to upgrade Ruby, so that adding ruby_version_requirements would cause less havoc for ordinary users. In practices it breaks CI builds (the biggest reason people complain) and forces people to upgrade (another reason people complain). But in my opinion, those are minor issues compared to crashes in production.
I'd vote for easier Ruby upgrades instead of a smarter Bundler - any day.
I love you guys for moving this forward!
Thanks @segiddins for tracking the edge cases - can't wait for Bundler 2.x!
And thanks @mzv for participating in this - the "app" vs " library" really helps understand and explain this better to everyone else.
And thanks @indirect for everything you do!

With recent releases of Bundler (I suppose 1.13.x) I'm happy to report that putting ruby RUBY_VERSION in the Gemfile works very well and makes Bundler resolve respecting Ruby versions.

This seems to make a recent situation of ours a bit less painful so we don't have to pin tons of Gems (we have to test against ruby 1.8.7 for some legacy stuff).
It appears to breakdown for some Gems and i'm not clear exactly on why.  I'm assuming it's because some of our transitive deps don't specify required_ruby_version in some of their own releases.
e.g.
https://github.com/puppetlabs/puppetlabs-catalog_preview/pull/190
✋ @ferventcoder, we miss you!


Remove compile-time logging-dependencies.

Please remove compile-time dependencies on concrete logging vendors. This affects the following artifacts:

org.slf4j:slf4j-log4j12
org.sl4fj: jcl-over-slf4j

Maybe it was intended to have them in test scope.

Scopes updated.
Thanks to @harti2006 for reporting.


HH.a [ HP.name "foo" ] [] doesn't work

HH.a [ HP.name "foo" ] [] doesn't work because HTMLa doesn't have name :: String.

Indeed it does not: https://www.w3.org/TR/html5/textlevel-semantics.html#the-a-element :smile:
Set the id instead: https://www.w3.org/TR/html5/browsers.html#navigating-to-a-fragment-identifier