I don't understand this issue report either. Looks to me like a bug in ceylon.ast, not in the typechecker.

Possibly because of the fix for #6358 ?

No, this is related to #4406

You mean, ceylon.ast needs parentheses around v else "null"?

Yes, I think always wrapping the let expression's expression in a synthetic group expression would work.

I don't understand this issue report either. Looks to me like a bug in ceylon.ast, not in the typechecker.

It seems to me, that in general, the output of the typechecker should be a valid Ceylon program–that is, something that if serialized to source would be accepted but the typechecker. Removing that invariant would have a disproportionate impact on consumers of the typechecker's ast.
At least, deviations from valid Ceylon code should be know. Perhaps 1) the typechecker is allowed to produce synthetic variables with $, 2) the typechecker is not required to generate Tokens, 3) ..., etc.
From a quick grep, it appears that "typechecker may disregard precedence rules" would affect 51 assertions in ceylon.ast.redhat, where the typechecker's tree would have to be cleaned up during conversion to ceylon.ast.

It seems to me, that in general, the output of the typechecker should be a valid Ceylon program

But it is. There is already an Expression node in the AST. You're demanding that the else expression be wrapped in two Expression nodes. That doesn't seem right to me.

But it is. There is already an Expression node in the AST. You're demanding that the else expression be wrapped in two Expression nodes. That doesn't seem right to me.

But the two-expression-node-form is what the typechecker produces from source code. So, I assume, tools normally disregard the outer expression node.

I think I usually distinguish between actual () expressions and pure wrapping nodes by testing for the presence of a ( token. (Perhaps also ).)

Ok, yeah, I see:
    case (is JExpression) {
        if (atom.mainToken exists) {
            return groupedExpressionToCeylon(atom, update);
        } else {
            // a JTerm wrapped in a JExpression
            assert (is Atom ret = expressionToCeylon(atom.term, update));
            return ret;
        }
    }

So, @lucaswerkmeister, would your suggestion be to just add the token?
Treating all JExpressions as GroupedExpressions would create a lot of noise.

Yes, I think that would be the best solution. new CommonToken(CeylonLexer.LPAREN, "(") should do, I don’t think we can expect reasonable values for {token,start,stop}Index or charPositionInLine.

@jvasileff can you try out 372de67 and see if it fixes the problem?

Sadly, that makes ant clean dist fail:
[ceylon-compile] /Users/jvasileff/Dropbox/Repos/ceylon/ceylon/language/src/ceylon/language/module.ceylon:35: error: compiler bug: -1 at com.redhat.ceylon.langtools.tools.javac.util.Position$LineMapImpl.getStartPosition(Position.java:175)
...

Grrr, apparently we do need to set those indices. I’ll check if I can adapt some code from a few other CommonToken instantiations.

It sounds like we're resorting to nastiness here to paper over the lack of a ParenthesizedExpression AST node type. Why not just add one?

Yeah, I just realized that adding tokens will probably confuse the formatter when run from the IDE. Big +1 for finally adding a dedicated ParenthesizedExpression :D

That's for 1.2.3, right?

@jvasileff do you need this in 1.2.3?

@gavinking I "need" this in order to compile the first example. But frankly, the world won't end without it!

Note that ceylon.ast can't read the language module as-is, if that matter for anyone else.

@jvasileff Hope that solves the problem.

@gavinking Thanks!


bug(credo-language-server): doesn't work if you open neovim outisde of the directory that contains mix.lock

          I see the same error message when opening an umbrella project.

I have credo in mix.exs under project/services/mix.exs. As I'm an nvim newbie, please advise if there's any additional information needed or if I should open another issue.
nvim 0.9.0
elixir-tools `43c2288`
LazyVim 2.11.0

:LspLog
[START][2023-04-24 10:09:22] LSP logging initiated
[ERROR][2023-04-24 10:09:22] .../vim/lsp/rpc.lua:734	"rpc"	"/home/yuri/.local/share/nvim/lazy/elixir-tools.nvim/lua/elixir/../../bin/credo-language-server"	"stderr"	"** (Code.LoadError) could not load /home/yuri/project/mix.lock. Reason: enoent\n    (elixir 1.14.4) lib/code.ex:1826: Code.find_file!/2\n    (elixir 1.14.4) lib/code.ex:1199: Code.eval_file/2\n    /home/yuri/.local/share/nvim/lazy/elixir-tools.nvim/bin/credo-language-server:5: (file)\n"
[WARN][2023-04-24 10:09:25] ...lsp/handlers.lua:537	'warning: Phoenix now requires you to explicitly list which engine to use\nfor Phoenix JSON encoding. We recommend everyone to upgrade to\nJason by setting in your config/config.exs:\n\n    config :phoenix, :json_library, Jason\n\nAnd then adding {:jason, "~> 1.0"} as a dependency.\n\nIf instead you would rather continue using Poison, then add to\nyour config/config.exs:\n\n    config :phoenix, :json_library, Poison\n\n  (phoenix 1.6.16) lib/phoenix.ex:56: Phoenix.start/2\n  (kernel 8.5.4) application_master.erl:293: :application_master.start_it_old/4\n'

Originally posted by @yuriploc in https://github.com/elixir-tools/elixir-tools.nvim/issues/67#issuecomment-1520148400

I see, I think I know the change I'd need to make to get this to work.
Thanks for the report


Documentation for static fragment of Calyx

Recent work by @calebmkim and @paili0628 added support for static groups and control which are time-sensitive operations into the Calyx language (#1344). We should document them in the language reference and have under the language tutorial heading explaining how to use them.

This is completed!


webui: indicate number of matches per rule

show how often a rule matched similar to capa explorer

@s-ff, I don't think order or filter by match count makes sense. Can we show this label right after the rule instead?

@s-ff, I don't think order or filter by match count makes sense. Can we show this label right after the rule instead?

Yeah sure, I can remove this column and have it displayed as label instead next to rules


resource "cloudflare_record" small BUG

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the provider and it is still present.

Terraform and Cloudflare provider version
To report a bug at the resource "cloudflare_record". If the comment field was bigger the 50 chars will return a error without a clear motive about it.
Error : failed to create DNS record: DNS Validation Error (1004)
Must be something like: failed to create DNS record: DNS Validation Error (1004): {The validation what goes wrong} or at the plan phase block inputs bigger than 50 chars.
Terraform -v :
Terraform v1.3.6
on linux_amd64
+ provider registry.terraform.io/cloudflare/cloudflare v3.33.1
+ provider registry.terraform.io/hashicorp/google v4.50.0

Your version of Terraform needs to be updated! The latest version
is 1.3.7. You can update by downloading from https://www.terraform.io/downloads.html

Affected resource(s)

cloudflare_record

Terraform configuration files
resource "cloudflare_record" "cc_dns_entry" {
    # allow_overwrite = false
    comment = "DNS created by terraform to VPN server ${var.env} with more than 50 chars"
    name = "cc"
    value = "${google_compute_address.public_ip_external_vpn.address}"
    type = "A"
    zone_id = data.cloudflare_zone.cc.id
    proxied = true
}

Link to debug output
not_required
Panic output
No response
Expected output
failed to create DNS record: DNS Validation Error (1004): {The validation what goes wrong} or at the plan phase block inputs bigger than 50 chars.
Actual output
failed to create DNS record: DNS Validation Error (1004)
Steps to reproduce
Just to create a cloudflare_record with a comment bigger than 50 chars
Additional factoids
No response
References
No response

I reduced my comment so that it won't be an issue. But can help someone else.

this isn't a bug as we generally keep the deeper validation like this in the API service, not the schema.
moving this to an enhancement if the service team wants to add it.

closing as we're going to leave this at the API service level for now.

I would love it if you guys reconsidered this for inclusion, it's currently a pretty vague experience when you try to create a record with a comment and it doesn't fail until apply time, and then only with a non-specific error.


Launch options not getting read after changes

VSCode Version: march insiders
OS Version: mac OS X march insiders

Steps to Reproduce:

Configure debugging with launch options

Save
debug
Make changes to launch options
Save
Hit f5

EXPECTED: changes to launch.json reflected
ACTUAL: saved changes are ignored
I suspect this might be because the save is async. However, the time between actions wasn't very long for me.

Never mind, pilot error on my part.


ART-10048: Enable microshift nightly build and publish-rpms job

once the branch cut for 4.18 was done this PR can be merged.
Until then it will be put on hold.

/unhold


ci: decrease proptest cases for trie::arbitrary

CI is taking too long here. So it just decreases the number of proptest cases from default (256) to 10.

Codecov Report

Merging #1266 (303f30b) into main (f56bb5a) will increase coverage by 0.20%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1266      +/-   ##
==========================================
+ Coverage   76.22%   76.43%   +0.20%
==========================================
  Files         339      342       +3
  Lines       37697    38385     +688
==========================================
+ Hits        28735    29338     +603
- Misses       8962     9047      +85

Flag
Coverage Δ

unit-tests
76.43% <100.00%> (+0.20%)
:arrow_up:

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

Impacted Files
Coverage Δ

crates/stages/src/trie/mod.rs
92.66% <100.00%> (ø)

crates/staged-sync/src/utils/chainspec.rs
23.52% <0.00%> (-26.48%)
:arrow_down:

crates/staged-sync/src/config.rs
57.60% <0.00%> (-14.02%)
:arrow_down:

...ates/net/downloaders/src/test_utils/file_client.rs
85.02% <0.00%> (-3.09%)
:arrow_down:

crates/primitives/src/chain/spec.rs
95.01% <0.00%> (-1.94%)
:arrow_down:

crates/net/network/src/peers/manager.rs
82.53% <0.00%> (-1.81%)
:arrow_down:

crates/net/eth-wire/src/types/broadcast.rs
76.78% <0.00%> (-1.55%)
:arrow_down:

crates/net/downloaders/src/bodies/bodies.rs
89.07% <0.00%> (-0.74%)
:arrow_down:

crates/primitives/src/transaction/mod.rs
89.10% <0.00%> (-0.62%)
:arrow_down:

crates/rpc/rpc/src/eth/api/mod.rs
10.00% <0.00%> (-0.45%)
:arrow_down:

... and 53 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Add prop to dropdown component to order descending

Feature Description
Would like a prop on the DropDown component to compliment the order prop to allow for descending order. Dropdowns used to use the same order that the data was sorted in the query, but after recent release dropdowns are now alphabetical (currently on v34.0.1. Would like a prop (call it ascending, orderAscending, or something like that) that accepts a true/false value to determine ascending or descending order.
Goal of Feature
Better organization of options in dropdown - especially useful when dealing with dates and you want the most recent date options at the top.
Current Solution / Workarounds
Don't think there is a work around in current version.
Alternatives
N/A

This was addressed in #2042 - it hasn't been released yet but once it is you will just be able to pass order="column_name desc", the same way you would in a SQL order by


Rename process_app_config to validate_app_config

As per discussion - validate is probably a more appropriate name. Return value is a "validated config"

This whole concept of app_config feels a bit unclear. We call it app_config, yet the validation method focuses just on user data that is to be passed to an instance (for example: https://github.com/galaxyproject/cloudlaunch/blob/dev/django-cloudlaunch/cloudlaunch/backend_plugins/base_vm_app.py#L32) and then the variable that houses the return value is in fact called final_ud_config.
In the mean time, we supply the app_config, which contains the entire app version config, including the everything that's in that model field, plus anything that the user might have supplied, to the deploy method in addition to the validated app config (i.e., final_ud_config).
The docs on these validate/merge methods are minimal and the data flow is really not clear here.

Fixed in: https://github.com/galaxyproject/cloudlaunch/commit/1ef5b89fbd160a80195dab2a7ac32e8ee72d3728#diff-626b539de7052317f2cf428920ec93a3


[Feature Request]:  Want to add dark mode to the signin page

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
I want to add the dark mode to the login and signup page
Use Case
This will looks cool
Benefits
No response
Add ScreenShots

Priority
High
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[ ] I'm a VSOC'24 contributor
[X] I have starred the repository

i will like to work on this, kindly assign me the task


Long TXT Record handling across providers

Hello,
We currently use Dyn + NSOne for DNS, recently we added a new TXT record for DKIM that was quite long. According to https://kb.isc.org/article/AA-00356/0/Can-I-have-a-TXT-or-SPF-record-longer-than-255-characters.html, we would just split the value, wrap in quotes, put a space between.
This works fine for Dynect, after submitting they auto-escape it. However, as we've seen other times with NSOne they don't particularly follow RFC all the time, or they provide some convenience through their API/UI. For me to put the same record in NSOne I just put the long value, no escaping, no breaking up, no quoting.
Now with OctoDNS after dumping the zone from NSOne, it wants to change Dyn's record to match. This would remove the quotes, space, etc. If it were applied, you get a txtdata: Too long error back from Dynect.
If you use dig to query for the record against both providers, you receive the same response.
NSOne
google._domainkey:
  type: TXT
  value: v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvUZ3wn3GvTx413NLq0PViwC1w7TZubYyipPswsyECqii1xxmDtSZjSTWq2iYU3FBeyii6wNS4yl0JQ4kS286Sbe1LWCr7ovS5KTEZgu/gVK4A07nKKKXOjmTXuTMqwsTMnYCvwkhACANXzuhE3ArhChPEOFzhAF+2waLgQ8/pBPtEXG49g+aXjfwkbRmxmlavjQKwM9gQhEPL+drfU0CwQa4X/BVMq6JTcPW73UPZfQPtqjKbxW6hJQ1tOFLj2fV/lFL/r9UKw9s/qb6s7jKyvwXSV6VQHkv1iVPOCxzL41y5JImW1YiePp2pZlbTby+7F12IPsM6ionsSxmwABbQIDAQAB

Dynect:
google._domainkey:
  type: TXT
  value: '"v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvUZ3wn3GvTx413NLq0PViwC1w7TZubYyipPswsyECqii1xxmDtSZjSTWq2iYU3FBeyii6wNS4yl0JQ4kS286Sbe1LWCr7ovS5KTEZgu/gVK4A07nKKKXOjmTXuTMqwsTMnYCvwkhACANXzuhE3ArhChPEOFzhAF+2waLgQ8/pBPtEXG49g+aXjfwkbRmxmla"
    "vjQKwM9gQhEPL+drfU0CwQa4X/BVMq6JTcPW73UPZfQPtqjKbxW6hJQ1tOFLj2fV/lFL/r9UKw9s/qb6s7jKyvwXSV6VQHkv1iVPOCxzL41y5JImW1YiePp2pZlbTby+7F12IPsM6ionsSxmwABbQIDAQAB"'

Sync Output:
********************************************************************************
* example.com.
********************************************************************************
* dyn (DynProvider)
*   Update
*     <TxtRecord TXT 3600, google._domainkey.example.com., ['"v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvUZ3wn3GvTx413NLq0PViwC1w7TZubYyipPswsyECqii1xxmDtSZjSTWq2iYU3FBeyii6wNS4yl0JQ4kS286Sbe1LWCr7ovS5KTEZgu/gVK4A07nKKKXOjmTXuTMqwsTMnYCvwkhACANXzuhE3ArhChPEOFzhAF+2waLgQ8/pBPtEXG49g+aXjfwkbRmxmla" "vjQKwM9gQhEPL+drfU0CwQa4X/BVMq6JTcPW73UPZfQPtqjKbxW6hJQ1tOFLj2fV/lFL/r9UKw9s/qb6s7jKyvwXSV6VQHkv1iVPOCxzL41y5JImW1YiePp2pZlbTby+7F12IPsM6ionsSxmwABbQIDAQAB"']> ->
*     <TxtRecord TXT 3600, google._domainkey.example.com., ['v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvUZ3wn3GvTx413NLq0PViwC1w7TZubYyipPswsyECqii1xxmDtSZjSTWq2iYU3FBeyii6wNS4yl0JQ4kS286Sbe1LWCr7ovS5KTEZgu/gVK4A07nKKKXOjmTXuTMqwsTMnYCvwkhACANXzuhE3ArhChPEOFzhAF+2waLgQ8/pBPtEXG49g+aXjfwkbRmxmlavjQKwM9gQhEPL+drfU0CwQa4X/BVMq6JTcPW73UPZfQPtqjKbxW6hJQ1tOFLj2fV/lFL/r9UKw9s/qb6s7jKyvwXSV6VQHkv1iVPOCxzL41y5JImW1YiePp2pZlbTby+7F12IPsM6ionsSxmwABbQIDAQAB']> (config)

It seems to be a difference in NSOne's API inputs, versus their query outputs. They respond correctly when querying DNS directly, but their API shows differently.
I'm not sure what a solution would be for this, but it is definitely a provider specific issue. Do you think it would be handled in the NS1 (and maybe other) providers code in OctoDNS or somewhere else? As the Dynect + NSOne records are identical, but their API outputs are different

According to https://kb.isc.org/article/AA-00356/0/Can-I-have-a-TXT-or-SPF-record-longer-than-255-characters.html, we would just split the value, wrap in quotes, put a space between.

You might take a look at https://github.com/github/octodns/pull/115. It hasn't been included in a release yet as there's were a couple other bits we were hoping to land beforehand. Both Dyn and Route53 required octoDNS to "chunk" things in my testing.
octoDNS will handle the splitting for you when using a version after that PR landed. It seemed cleaner that way.
NS1 didn't seem to need things to be split, it at least accepted and returned the large value from the API. I believe I verified that the record was served out correctly, but it'd definitely make sense to verify that.

Awesome, that does sound like it fixes the issue between our Dyn + NS1 providers, and other providers that require it split as input, versus accepting the long value and splitting on your behalf.
-> dig TXT google._domainkey.asmith.net @ns1.p21.dynect.net. +short
;; Truncated, retrying in TCP mode.
"v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyuW8YJyY1DZ23WUMu9jxYAKsG0NaKq9B2I2SHTItdtS7dLq1MaQerkPt0QkESO6V2B0MOnEe8rfIzEHyl0IERqWgHKw0S7+FUyamqC581TZG9A4IBhqskNDnBmhs/EJc37qhURpsKjmb+hbjNRZMbspZhWmw2kQeapEufQqTHYVk4OgKN5DRh7XkSw9Z7OeDc" "FO8NVqdgD26M1jtfbPjKRPft443s/Y5xI3fztuM+Fas9HTAkgCoeoOLJb01rOLff9AAm5Cb9/7HPiZbGjUu1xoes0DIeKNE13+3xc6kAYtPu04uVfph9T/eAFMsAXNcEmb8FWVE7llHX0m1vrnONwIDAQAB"

-> dig TXT google._domainkey.asmith.net @dns1.p07.nsone.net. +short
"v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyuW8YJyY1DZ23WUMu9jxYAKsG0NaKq9B2I2SHTItdtS7dLq1MaQerkPt0QkESO6V2B0MOnEe8rfIzEHyl0IERqWgHKw0S7+FUyamqC581TZG9A4IBhqskNDnBmhs/EJc37qhURpsKjmb+hbjNRZMbspZhWmw2kQeapEufQqTHYVk4OgKN5DRh7XkSw9Z7OeDc" "FO8NVqdgD26M1jtfbPjKRPft443s/Y5xI3fztuM+Fas9HTAkgCoeoOLJb01rOLff9AAm5Cb9/7HPiZbGjUu1xoes0DIeKNE13+3xc6kAYtPu04uVfph9T/eAFMsAXNcEmb8FWVE7llHX0m1vrnONwIDAQAB"

I can confirm that Dyn want's it split (and maybe escaped already), NSOne takes the unsplit value, and will split it when queried as seen above.


[KUDO-C*] Fix Grafana dashboard for Prometheus metrics

Fixed Grafana json from https://github.com/criteo/cassandra_exporter/blob/master/grafana/cassandra_kubernetes.json

Thanks @phrynchanka.
Would you be able to attach a screenshot of the dashboard's graphs working?

Thanks @phrynchanka.
Would you be able to attach a screenshot of the dashboard's graphs working?

Sure. I've run stress test to see graphs.

Thanks @phrynchanka, that looks better.
I wonder if the graphs that show up empty are like that because there's really no metrics for them, or because their query is incorrect. Do you have an idea?

I'm gonna merge this for now so that we have the dashboard in the repository. We can work on investigating why some graphs are empty later.


todo: init at 2.4

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Just one more suggestion, after thats adressed I'll gladly merge this :)

done

Aplogies about the late reply! Could you just squash the commits so we only have the first two?

@IvarWithoutBones done

Aplogies about the late reply! Could you just squash the commits so we only have the first two?

anything else?

@sioodmy you marked the comment on meta.mainProgram as resolved but it looks like you didn't push your changes


Fix broken link

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@d0371ff). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #8091   +/-   ##
=========================================
  Coverage          ?   41.78%
=========================================
  Files             ?      481
  Lines             ?    64425
  Branches          ?        0
=========================================
  Hits              ?    26917
  Misses            ?    34038
  Partials          ?     3470

Continue to review full report at Codecov.

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

Thanks for your contribution.


Write a Swift program to find largest and smallest numbers in an array

Description
Write a Swift program to find largest and smallest numbers in an array
Input  : [1, 2, 3, 4, 5]
Output : 5, 1

How to contribute

Save the solution in program/FindLargestAndSmallestNumbersInAnArray.swift file
Add FindLargestAndSmallestNumbersInAnArray.swift file in find-largest-and-smallest-numbers-in-an-array folder

!assign


pi-hole folder not created even if running

Playbook output the following:
TASK [Create Pi-hole folder on Pi.] *****************************************************************************************************************************************************************************
ok: [<IP_ADDRESS>]

but when I check in ~ I can only see the directory internet-pi.
It seems that the following from tasks/pi-hole.yml doesn't create anything:
- name: Create Pi-hole folder on Pi.
  ansible.builtin.file:
    path: "{{ config_dir }}/pi-hole"
    state: directory
    mode: 0755
  become: false

however, looking at sudo docker container ls:
f616cddee2e4   pihole/pihole:latest                   "/s6-init"               14 hours ago   Up 13 hours (healthy)

And I can and I am using pihole with no issue other than not be able to stop the container.
Same thing it's happening for the same reason with Grafana where when I go to ~/internet-pi/internet-monitoring and I run
➜ docker-compose down
I get:
ERROR: Couldn't find env file: ~/internet-pi/internet-monitoring/grafana/config.monitoring

The above is what happen when you run ansible-playbook main.yml using sudo :)


some key seem to be nil when I execute 'scan 0'

Search before asking

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

Version
v2.0.6

Minimal reproduce step
I do not know
What did you expect to see?
the (nil) disappears
What did you see instead?
the (nil)  exists and can not be deleted
Anything Else?
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR!

@hlf2016 I can't get the point and it'd be better to add reproduce steps, or we cannot fix this issue.

@hlf2016 I can't get the point and it'd be better to add reproduce steps, or we cannot fix this issue.

I do not know how it appeared

as seen in the picture above
how can I delete the  (nil) key

Hi @hlf2016, thanks for your feedback, it should be related to this issue:https://github.com/apache/incubator-kvrocks/pull/930. Kvrocks will return an empty bulk string(nil for redis-cli), you can have a check if you have the empty key name like below:
<IP_ADDRESS>:6666> get ""
"1"

And delete if this key was not expected, then the nil will be disappeared.

Hi @hlf2016, thanks for your feedback, it should be related to this issue:#930. Kvrocks will return an empty bulk string(nil for redis-cli), you can have a check if you have the empty key name like below:
<IP_ADDRESS>:6666> get ""
"1"

And delete if this key was not expected, then the nil will be disappeared.
We will fix this issue soon.

Yes I once tried this  but it made no effects

So any other characters can lead to this ?

@hlf2016 It means this key exists and it's NOT a string type, you can use type "" to inspect the value type.

type ""

@hlf2016 It means this key exists and it's NOT a string type, you can use type "" to inspect the value type.

Ok thx very much
I was totally blinded
I'm sorry to bother you too much

type ""

@hlf2016 It means this key exists and it's NOT a string type, you can use type "" to inspect the value type.

Ok thx very much I was totally blinded I'm sorry to bother you too much

No problem, welcome to join the WeChat community through: https://github.com/apache/incubator-kvrocks#social-media


document visualizations data format

Log data formats to console, copy, paste, anonymize, and write an explanation. Put the format documentation in this repo's wiki or in a markdown file.

I'm going to document them here and then transfer them over to the wiki afterwards.

complaints-by-month
[
  {"count": 17, "month": "Fri May 01 2015 00:00:00 GMT-0700 (PDT)"},
  {"count": 36, "month": "Fri Jun 01 2015 00:00:00 GMT-0700 (PDT)"},
  ...
]

complaints-by-precinct
[
  {"count": 57, "type": "East District"},
  ...
]

complaints-by-demographic (demogrphics matrix)
This is implemented with d3.map objects
var map = d3.map({
    "Asian": d3.map({})
    "Black": d3.map({
        "Black": {
            "count": 13,
            "percent": 0.05726872246696035
            },
        "Hispanic": {},
        "Other": {},
        "Unknown": {},
        "White": {},
        })
    "Hispanic": d3.map({})
    "Other": d3.map({})
    "Unknown": d3.map({})
    "White": d3.map({})
});
map.officerRaceTotals = d3.map({
        "Black": {
            "count": 45,
            "percent": 0.19823788546255505
            },
        "Hispanic": {},
        "Other": {},
        "Unknown": {},
        "White": {},

    })

complaints-by-disposition
[
  {"count": 83, "type": "Not Sustained"},
  ...
]

complaints-by-allegation
[
  {"count": 74, "type": "Rude, Demeaning, or Affronting Language"},
  ...
]

complaints-by-allegation-type
[
  {"count": 74, "type": "Rude, Demeaning, or Affronting Language"},
  ...
]

officer-demographics
[
  {"count": 85917, "entity": "city",
    "percent": 0.08607546493093786, "race": "Hispanic" },
  ...
  {"count": 40, "entity": "department",
    "percent": 0.025268477574226154, "race": "Hispanic" },
  ...
]

complaints-by-officer
[
  {"count": 74, "label": "Officers with 1 complaint"},
  ...
]

A few caveats:

The d3 maps in complaints-by-demographic are used essentially as key-value stores that are cleaner and with a better API than a standard Javascript Object.
all of these actually include an "incidents" attribute that I did not document here. This is included for debugging purposes (it contains an array of all the incidents corresponding to a particular bucket or group), and should not be used for drawing the charts.


Braces auto-close and indentation

I installed newest version of Brackets of my new laptop and not sure if I had an extension previously or if my old machine (older version) had different settings.
Auto-close for braces is switched on. For example I'm pressing a tab in CSS file name of a class and when I press opening curly brace the closing one appears (which is great) but the indentation disappears and everything is moved to the far left.
Is this a default behaviour and do I have to install an extension to disable it?

Do you have the same of https://github.com/adobe/brackets/issues/13305 ?


[BesTLA] New thread pool and hybrid dispatcher

Type of Change

[x] New thread pool without OpenMP
[x] Higher FLOPs for hybrid CPUs
[x] Enable BesTLA benchmark
[x] Sync thread pool of ne_layers and bestla, remove existing thread pool
[x] Model integration
[ ] Model performance optimization

just a suggestion: default cmake disable our thread-pool, if customer install ns via pip, then they can't get the perf benefit from our thread-pool on client platform.
can our dispatcher detect CPU arch, if detected hybrid CPUs then dispatch to our thread-pool otherwise to omp?

some performance data on 12900K:
---------------input = 1949--------------------

ThreadPool
model_print_timings: prompt eval time = 12259.06 ms /  1949 tokens (    6.29 ms per token)
model_print_timings:        eval time =  1185.61 ms /    15 runs   (   79.04 ms per token)
model_print_timings:       total time = 13567.22 ms
========== eval time log of each prediction ==========
prediction   0, time: 12259.06ms
prediction   1, time: 79.18ms
prediction   2, time: 78.56ms
prediction   3, time: 78.58ms
prediction   4, time: 78.68ms
prediction   5, time: 78.55ms
OMP
model_print_timings: prompt eval time = 16296.21 ms /  1949 tokens (    8.36 ms per token)
model_print_timings:        eval time =  1294.00 ms /    15 runs   (   86.27 ms per token)
model_print_timings:       total time = 17624.78 ms
========== eval time log of each prediction ==========
prediction   0, time: 16296.21ms
prediction   1, time: 80.91ms
prediction   2, time: 84.77ms
prediction   3, time: 86.91ms
prediction   4, time: 97.11ms
prediction   5, time: 88.35ms

---------------input = 32--------------------

ThreadPool
model_print_timings: prompt eval time =   184.27 ms /    32 tokens (    5.76 ms per token)
model_print_timings:        eval time =   898.96 ms /    15 runs   (   59.93 ms per token)
model_print_timings:       total time =  1091.83 ms
========== eval time log of each prediction ==========
prediction   0, time: 184.27ms
prediction   1, time: 59.38ms
prediction   2, time: 59.29ms
prediction   3, time: 62.48ms
prediction   4, time: 59.49ms
prediction   5, time: 59.23ms
OMP
model_print_timings: prompt eval time =   278.05 ms /    32 tokens (    8.69 ms per token)
model_print_timings:        eval time =  1021.67 ms /    15 runs   (   68.11 ms per token)
model_print_timings:       total time =  1308.71 ms
========== eval time log of each prediction ==========
prediction   0, time: 278.05ms
prediction   1, time: 62.68ms
prediction   2, time: 66.06ms
prediction   3, time: 62.36ms
prediction   4, time: 61.10ms
prediction   5, time: 62.53ms

just a suggestion: default cmake disable our thread-pool, if customer install ns via pip, then they can't get the perf benefit from our thread-pool on client platform. can our dispatcher detect CPU arch, if detected hybrid CPUs then dispatch to our thread-pool otherwise to omp?

@zhewang1-intc In this PR, it initially enables thread pool with good first-token speed. But it may slow down the next token. So it's disabled for now.

@zhewang1-intc next token perf issue is fixed. but we need more validation for this new thread pool. so, it will stay disabled as default.

CPU：MTL 6P+8E 65W (use 12 thread to keep performance stable)
memory: DDR5 5600Hz

model
thread_pool
token
first token total
next token

qwen
this branch
1024
14205.99
161.87

qwen
main(OMP)
1024
16472.06
188.22

llama2
this branch
1024
12780.52
136.74

llama2
main(OMP)
1024
15572.36
144.12


Regarding defining OCSP URL for revoked certificates

Hi Idan,
We tried to create certificates with CRL extensions. But need clarify that why OCSP and CRL both URLs needed in certificates:
        Authority Information Access:
            OCSP - URI:http://ocsp.testharness.cbsd.winnf.github.com/

        X509v3 CRL Distribution Points:

            Full Name:
              URI:http://testharness.cbsd.winnf.com/crlserver.crl

Could you please confirm, why this OCSP URL is needed in this certificate.
Regards,
Pawan Jangid

Hi Pawan,
for revoked certificates the device checking the certificate status can use either OCSP or CRL so I put both inside the certificate. This is also according to WINNF-TS-0022 v1.1.0 CBRS PKI.
Currently for testing purposes we will go with the CRL method (SAS vendors are also using the CRL method for now), but the X.509 certificate has both OCSP and CRL.


Upgrade pipeline scripts version

Integrate rest-api-specs-scripts latest version with the fix
in oav about output exception information when command switch pretty
is on.

/azp run automation - sdk

Can one of the admins verify this patch?


Calling run_in_transaction twice causes the second call to fail

It seems that the _transaction object in Session is not being reset once the transaction commits. This leads to a "Transaction is already committed" error. Here is a simple code to demonstrate this:
def run_txn():
    from google.cloud import spanner
    spanner_client = spanner.Client()
    instance_id = 'your-instance'
    instance = spanner_client.instance(instance_id)
    database_id = 'example-db'
    database = instance.database(database_id)
    def f(t):
      t.insert_or_update(
          table="Singers",
          columns=('SingerId', 'FirstName'),
          values = [(6, "A"),])
    database.run_in_transaction(f)
    database.run_in_transaction(f)

if __name__ == '__main__':
    run_txn()

The error that is raised is:
Traceback (most recent call last):
  File "txn.py", line 17, in <module>
    run_txn()
  File "txn.py", line 14, in run_txn
    database.run_in_transaction(f)
  File "/usr/local/google/home/vikask/venvs/pythonq/local/lib/python2.7/site-packages/google/cloud/spanner/database.py", line 379, in run_in_transaction
    return session.run_in_transaction(func, *args, **kw)
  File "/usr/local/google/home/vikask/venvs/pythonq/local/lib/python2.7/site-packages/google/cloud/spanner/session.py", line 309, in run_in_transaction
    txn.commit()
  File "/usr/local/google/home/vikask/venvs/pythonq/local/lib/python2.7/site-packages/google/cloud/spanner/transaction.py", line 104, in commit
    self._check_state()
  File "/usr/local/google/home/vikask/venvs/pythonq/local/lib/python2.7/site-packages/google/cloud/spanner/transaction.py", line 46, in _check_state
    raise ValueError("Transaction is already committed")
ValueError: Transaction is already committed

The version of google-cloud-spanner I used was 0.24.1

Fix released:

https://github.com/GoogleCloudPlatform/google-cloud-python/releases/tag/spanner-0.24.2
https://pypi.python.org/pypi/google-cloud-spanner/0.24.2


Migration for slots_per_epoch is failing

During update to the new version following error about migrations occurs:

cardano-db-sync-extended container just hangs in the restart loop, and I have no idea how to access /tmp/migrate-***.log in a dead container for more information.

Has the postgres-data been removed and recreated? Please see the release notes, where I've linked to a new section in the Wiki regarding this action. Feel free to re-open if you are still stuck


Get host local storage capacity

In local storage scenario, the primary storage capacity is per host. So the cluster storage capacity or zone storage capacity can not reflect the real capacity in some host.
GetPrimaryStorageCapacity
all=                  clusterUuids=         primaryStorageUuids=
timeout=              zoneUuids=
So we'd better to create a new API **GetLocalPrimaryStorageCapacity hostUuid = **

new API is added: GetLocalStorageHostDiskCapacity, fixed in upstream


How to add a desired feature in this.

Please respond

Get the src of what feature you want then paste. Ez as that
Then again you need to have at least some programming experience else its a big no

learncpp.com


With default language_level and Python 3 runtime: surprising size_t division results

Test program:
def run():
  test_list = ['a']
  test_list_len = len(test_list)
  div1 = 1/(test_list_len + 1)
  div2 = 1/(len(test_list) + 1)
  print(div1)
  print(div2)

Results of test.run() in Python 3.5.2, it's clear the results of div1 and div2 are not the same:
0.5
0

Here is the C code generated for each line:
  /* "test.py":4
 *   test_list = ['a']
 *   test_list_len = len(test_list)
 *   div1 = 1/(test_list_len + 1)             # <<<<<<<<<<<<<<
 *   div2 = 1/(len(test_list) + 1)
 *   print(div1)
 */
  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_test_list_len, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_div1 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "test.py":5
 *   test_list_len = len(test_list)
 *   div1 = 1/(test_list_len + 1)
 *   div2 = 1/(len(test_list) + 1)             # <<<<<<<<<<<<<<
 *   print(div1)
 *   print(div2)
 */
  __pyx_t_2 = PyList_GET_SIZE(__pyx_v_test_list); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_2 + 1);
  if (unlikely(__pyx_t_4 == 0)) {
    PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
    __PYX_ERR(0, 5, __pyx_L1_error)
  }
  else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_t_4 == (Py_ssize_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFL$
    PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
    __PYX_ERR(0, 5, __pyx_L1_error)
  }
  __pyx_v_div2 = __Pyx_div_Py_ssize_t(1, __pyx_t_4);

I can see that __Pyx_PyNumber_Divide changes based on the detected Python runtime, while __Pyx_div_Py_ssize_t is the same in either runtime:
static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b) {
    Py_ssize_t q = a / b;
    Py_ssize_t r = a - q*b;
    q -= ((r != 0) & ((r ^ b) < 0));
    return q;
}

I plan to set 'language_level': 3 in my compiler directives, because this will suit my needs, but I was pretty surprised by the behavior. I expected both lines to use int division or float division, but not a mixture!

Related, the behavior of div0 = 1 / 2:
  /* "test.py":3
 * def run():
 *   len1 = len([1, 2])
 *   div0 = 1 / 2             # <<<<<<<<<<<<<<
 *   div1 = 1 / len1
 *   div2 = 1 / len([1, 2])
 */
  __pyx_v_div0 = 0;

So the generated code is optimized to 0, which is unexpected with Python 3.

This is due to type inference.
def run():
  test_list = ['a']
  test_list_len = len(test_list)   # -> result is `Py_ssize_t`
  div1 = 1/(test_list_len + 1)    # -> representing `test_list_len` as C integer is unsafe (can overflow)
  div2 = 1/(len(test_list) + 1)    # -> result of `len()` is `Py_ssize_t`, expression is evaluated in C
  print(div1)
  print(div2)

If you typed test_list_len as Py_ssize_t, you would get the same (C-ish) result for both. Cython's (safe) type inference decides that it cannot safely type test_list_len as C integer and therefore calculates it in Python space, where the result depends on the runtime Python version.
Do I understand correctly that you did not yet enable 'language_level=3` in the example above?

When I try it (with the latest master and language_level=3), I get a float result for div2, as expected. Closing as not a bug.

Thanks for your response. You're correct that I had not enabled language_level=3 in the example above. With language_level=3 I get a float result for both div1 and div2. With language_level=2 with Python 3 runtime, I get a float for div1 and what looks like an int for div2.


withLoggingContext doesn't work well when called inside coroutines

Spent some time tracking down this logging bug involving withLoggingContext and coroutines and wanted to make sure no one else tripped over it.
I had some code written as such:
withLoggingContext("foo" to "bar") {
            withContext(MDCContext()) { suspending_function() }
}

The problem is that you may be in a different thread when you leave suspending_function as when you entered it, so the MDC.remove call won't have an effect.  The wiki example code uses launch, so doesn't have this problem.
My workaround was:
val mdc = MDC.getCopyOfContextMap()?.apply { put("foo", "bar") } ?: mapOf("foo" to "bar")
withContext<T>(MDCContext(mdc)) { suspending_function() }

But I rather have something as nice as withLoggingContext.  I'd be happy to submit a patch, but I wanted some direction on the API.  Do we use a different function entirely, or should withLoggingContext take a flag where that flags the block as suspending?  You could argue that this belongs in the slf4j integration directly and I should ping those guys.

I think this is a bug of MDCContext and kotlinx-coroutines. Can you please submit it there? Or do you want me to do that? here is the repo https://github.com/Kotlin/kotlinx.coroutines/blob/master/integration/kotlinx-coroutines-slf4j

I'm not really sure it's an upstream bug.  I don't think they can do anything to influence that you are in a different thread before and after the withContext.  We can either 'fix it there' by making some secondary constructors as fluent as withLoggingContext, or make the wrapper thread agnostic by making function local copies of the MDC (like in my example), but that approach is fundamentally incompatible with setting it on the thread level.

I do think it's an issue with upstream. withContext<T>(MDCContext(mdc)) means the context should be applied on all threads, in and out. At least that is how I understand it.

Sorry if I'm being unclear, the code block inside withContext runs correctly.  The problem is that the values set by withLoggingContext don't get unset correctly.   E.g. Thread A calls withLoggingContext and sets the foo value to bar.  Inside withContext everything is great and foo returns bar no matter what thread it's running in.  When withContext completes and hands control back to withLoggingContext it happens to be on thread B.  Now withLoggingContext unsets foo, but on thread B.  Thread A still has the 'bar' value for foo when withLoggingContext exits, and will continue to log the wrong value until it happens to hit the same code again.

I think I understand now. Probably another method is a good idea. PR is welcome.

Closing it for now. PR is welcome.


SCM: Show History Graph doesn't handle lots of history well

Type: Performance Issue

Create a branch off the Git repository's default branch
Ensure that the SCM: Show Outgoing Changes option is set to "auto"
Commit thousands of changes with thousands of commits
Observe that the source control panel becomes unresponsive until the SCM: Show History Graph option is turned off and VS Code is restarted.

I think there should be a timeout on this feature if it's going to be on by default so developers unfamiliar with this switch won't get stuck and unable to proceed with normal development.
VS Code version: Code 1.92.2 (fee1edb8d6d72a0ddff41e5f71a671c23ed924b9, 2024-08-14T17:29:30.058Z)
OS version: Windows_NT x64 10.0.22631
Modes:

Workspace Info
|  Window (listWebAppActions.pl - ox1 (Workspace) - Visual Studio Code)
|    Folder (hcm): more than 22031 files
|      File types: busclass(10880) keyfield(5068) field(2436) class(974)
|                  bustask(220) wsi(64) digest(53) java(53) lct(18)
|                  properties(9)
|      Conf files:;

Extensions (24)

Extension
Author (truncated)
Version

lpl-debugger
Bel
1.0.0

lpl-icons
Bel
1.0.0

lpl-snippets
Bel
1.0.6

git-diff-and-merge-tool
dav
1.0.5

vscode-eslint
dba
3.0.10

gitlens
eam
15.3.1

gitlab-workflow
Git
5.9.0

infor-note-runner
Inf
1.0.0

lpl-language-server
Inf
0.8.0

landmark-environment-support
Inf
1.4.0

lpl-syntax
Inf
1.0.4

rainbow-csv
mec
3.12.0

git-graph
mhu
1.30.0

indentation-level-movement2
Mik
1.3.0

vscode-docker
ms-
1.29.2

debugpy
ms-
2024.10.0

isort
ms-
2023.10.1

python
ms-
2024.12.3

vscode-pylance
ms-
2024.8.2

jupyter
ms-
2024.7.0

jupyter-keymap
ms-
1.1.2

jupyter-renderers
ms-
1.0.19

vscode-jupyter-cell-tags
ms-
0.1.9

vscode-jupyter-slideshow
ms-
0.1.6

(2 theme extensions excluded)

A/B Experiments
vsliv368cf:30146710
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscod805cf:30301675
binariesv615:30325510
vsaa593cf:30376535
py29gd2263:31024239
c4g48928:30535728
azure-dev_surveyone:30548225
a9j8j154:30646983
962ge761:30959799
pythongtdpath:30769146
welcomedialog:30910333
pythonnoceb:30805159
asynctok:30898717
pythonregdiag2:30936856
pythonmypyd1:30879173
2e7ec940:31000449
pythontbext0:30879054
accentitlementst:30995554
dsvsc016:30899300
dsvsc017:30899301
dsvsc018:30899302
cppperfnew:31000557
dsvsc020:30976470
pythonait:31006305
dsvsc021:30996838
bdiig495:31013172
pythoncenvpt:31062603
a69g1124:31058053
dvdeprecation:31068756
dwnewjupytercf:31046870
impr_priority:31102340
nativerepl2:31104044
refactort:31108082
pythonrstrctxt:31112756
wkspc-onlycs-t:31111718
wkspc-ranged-t:31125599
ei213698:31121563
aajjf12562:31125793

1.93 has big improvements in this area and will ship later this week.

As @gjsjohnmurray, we have made big improvements to the source control graph that are already available in VS Code Insiders and will be included in the upcoming VS Code release scheduled for later this week.


BRS-459: partial match on park name searches

Jira Ticket:
BRS-459
Jira Ticket URL:
https://bcparksdigital.atlassian.net/browse/BRS-459
Description:
Add support for partial text matches (e.g. "Rath" for "Rathtrevor")
Also removes isOpenToPublic from API results as that has been replaced by displaying the access status text directly.

Picks up many more mispellings, and seems much faster. Nice work!


Add adjustWith & updateWith?

adjust or update first satisfied item in the list
adjustWith :: (a → a) → predicate → [a] → [a]
const adjustWith =  (transformer, pred, list) => R.converge(
    R.adjust(transformer),
    [
      R.findIndex(pred),
      R.identity,
    ]
  )(list);

const data = [
  {id: 1, name: 'Jack'},
  {id: 2, name: 'Pony'},
];
adjustWith(R.evolve({ name: toUpper }), R.whereEq({ id: 1 }), data)

// output
[
  {id: 1, name: 'JACK'},
  {id: 2, name: 'Pony'},
];

While I like the basic idea, I run into some sort of wall with it.  If I pass a predicate and an action to a multivariate container I would assume that this action would apply to everything that matches the predicate, not just to the first match.  That would mean a change to your implementation.
But if we were to change it this way, then we are stray pretty far from what adjust does.
I don't see a wonderful solution.  Any ideas?

If I pass a predicate and an action to a multivariate container I would assume that this action would apply to everything that matches the predicate, not just to the first match.

What's the meaning of a multivariate container? Can you give an example of this situation?

Sorry, that was silly, but I simply mean a container that can hold more than one value, such as a list (or Array), a tree, a queue, etc.
Moreover that was phrased poorly even with this understood.  It should read something more like:

If I pass a predicate, an action, and a multivariate container to a function, I would assume that the function would apply the action to every value in the container that matches the predicate, not just the first match.

I would assume that the function would apply the action to every value in the container that matches the predicate, not just the first match.
According to my understanding, if the multivariate container is the parameter(list) passed into adjustWith, there can be two version of adjustWith: adjustWith and adjustAllWith; else if the multivariate container means every iterated item of the list, it's up to the action how to adjust every item?

I'm for it.
The first-only update is extremely valuable indeed, especially in the UI world, in which very often a  set/map is in fact stored as a list, for practical reasons such as user-facing ordering. Then, rather than intended assocPath([id, "enabled"], true, accounts), one needs to find the account with that id and update it, or do something like ``map(when(...```, which always feels a little strange.
I think having adjustAllWith, updateAllWith would indeed make the situation clearer, though it's harder to make the case for them (esp. for updateAllWith)

I'm playing catch-up again.
I think with the All variant, I would at least be interested.  I would love to see a PR.  I think we need to balance this against a concern about adding still more functions to the library.  But this one, unlike many of our other object/array manipulation functions, does not seem amenable to lenses.  So it's certainly worth discussing.

OK, I'll make a PR.

But this one, unlike many of our other object/array manipulation functions, does not seem amenable to lenses.

It can be done with traversals and partial lenses.

Note that adjustWith as defined in the original issue adjusts the last element of the array in case nothing matches the predicate.  See here.  This is a nice example of the fact that findIndex returning -1 does not compose.

It can be done with traversals and partial lenses.

Oh yes.  But the style lenses used by Ramda mean that you have a setter and that is certainly not possible when trying to match an arbitrary predicate.

This is a nice example of the fact that findIndex returning -1 does not compose.

What it really makes me observe is that we tried to do too much when we handled negative indices.  We added unwarranted complexity.


Support NATO phoentic alphabet

Adds a module for generating strings from the nato phonetic alphabet. I've found this really useful for generating categories/severity levels/team names etc.
Examples
Faker.Nato.letter_code_word
# => "ALPHA"

Faker.Nato.digit_code_word
# => "ONE"

Faker.Nato.format("?-#-?")
# => "ALPHA SIX ZULU"

Faker.Nato.callsign
# => "DELTA XRAY FIVE"

@igas what do you think? I made use of it in the ruby ffaker gem. Be awesome to have access to it in elixir too. (Cheers for putting together this library by the way - exactly what I was looking for).

:heart: :green_heart: :blue_heart: :yellow_heart: :purple_heart:


JWT: support public keys caching

Problem Statement
JWK endpoints expose keys which typically are not frequently rotated.
Currently CrateDB requests public keys on each authentication request which might be too expensive.
We could add support of Cache-Control: max-age header (value in seconds) to control caching policy per authentication provider.
Some details:
https://github.com/auth0/java-jwt already supports caching, but we need to cache JwkProvider instances on our own (instead of creating it per request in jwkProvider) to actually utilize caching.

Isn't this considered a bug, as the caching mechanism was mentioned in the original issue https://github.com/crate/crate/issues/14238 ?

Isn't this considered a bug, as the caching mechanism was mentioned in the original issue #14238 ?

Why would this justify to treat this as a bug? AFAIK this is not related to a functional part but rather an optimization. Or is something breaking without a cache in place?

Why would this justify to treat this as a bug? AFAIK this is not related to a functional part but rather an optimization. Or is something breaking without a cache in place?

Sorry, should have been more clear. When we were providing feedback on this feature the assumption was that caching is part of the initial scope and there was maybe just as slight issue why it was not working properly. What is unclear from the documentation: Would the current behavior for every query / POST  to /_sql fetch the public key from the remote server? That seems excessive and potentially slow down querying by quite a lot.
So not a bug, but rather a non-functional requirement for the initial feature request.

We now have JWT in use for some of the cloud cluster. While it does work, it sometimes can feel slugish in terms of response time. I did a small test of running 100 request with basic auth and bearer token (jwt) against the same cluster. The results are somewhat consistent. Generally speaking this is a non-issue if tcp keep alive are used, however since tcp connections are handled by the browser and there is little to no way to influence how the browser is handling connections this still can be an issue.
keep-alive enabled

Running test with Basic Auth...
Auth Type: basic
Total time for 100 requests: 3009.28 ms
Average response time: 30.09 ms
Median response time: 28.15 ms

Running test with Bearer Token...
Auth Type: bearer
Total time for 100 requests: 2776.53 ms
Average response time: 27.77 ms
Median response time: 27.30 ms

however comes apparent with explicitly disabling tcp keep-alive
keep-alive disabled

Running test with Basic Auth...
Auth Type: basic
Total time for 100 requests: 13555.64 ms
Average response time: 135.56 ms
Median response time: 133.90 ms

Running test with Bearer Token...
Auth Type: bearer
Total time for 100 requests: 38600.90 ms
Average response time: 386.01 ms
Median response time: 363.04 ms


Fix conda check

Need to call the function, bool(function) is always True.

Another point, is there a reason why getting the path with sysconfig.get_path('data') is preferential over os.environ['CONDA_PREFIX']? I have a conda env in a virtualenv (maybe not so common, but still), and using sysconfig gives me the path of the venv instead of the conda environment.

Thanks @nfzd, i'll merge this PR and change sysconfig.get_path('data') to os.environ["CONDA_PREFIX"]


Ergast integration tracking

[X] F1 race [year] [race number] - /race [season] [race number]
[ ] F1 driver [name]
[ ] F1 track [track]
[ ] F1 qualipreview
[ ] F1 racepreview
[x] Current Standings - /standings [driver, constructor, both] Also accepts "d", "c", "b".
[x] Circuit info
[ ] Pit stops info
[ ] Lap times
[X] Constructor info - /constructors [constructorId] Replace Spaces with _ (red_bull), engine works teams are denoted by a hyphen (brabham-brm)
[ ] Season info

[ ] Current Standings
[ ] Circuit info
[ ] Pit stops info
[ ] Lap times
[ ] Constructor info
[ ] Season info

CircuitInfo cmd in stg

Circuit Info, List Circuits, and List Constructors all pushed to main


Adding getter

Hey
I'm using your fantastic library for developing a TYPO3 plugin. Since the templating engine from TYPO3 (Fluid) accesses variables in objects via getter, it would be nice to have a getter directly in Sabre\VObject\Node. Would you consider to add a magic __call() function which would make e.g. getVevent() calls possible?
 But you might want to implement an access restriction or something else.
Keep up the great work!

Hi @Razrael , it doesn't really make sense to me to add code specific to making it easier to work with frameworks such as TYPO3. The request is a bit too specific for that, and I don't think this is particularly useful for everyone using the library. (frankly, I'm worried it just makes things more confusing).
If you really need this, I would recommend creating some wrapper objects for TYPO3 so you can add your own functionality without having to modify the core vobject logic. If you're running into problems with that, or if you need any advice on how to do that I'm happy to help you think of ideas though, just let me know where you're getting stuck.


LayerFS-Like support for MockFileSystem

Is your feature request related to a problem? Please describe.
Suppose I have a CodedUI/Integration-Test-Project, which requires a bunch of nested directories/files to be set up before the tests can start (copied to a common run/test directory). The component(s) being tested reads some of those files, and may write/override the same or other files.
I would like to know which files are written (and whats the new content if so). Also I would want to "recover"/undo files from failed tests.
Describe the solution you'd like
A new MockFileSystem-Like class, or a Flag in existing classes that:

mocks all writes (like it already does)
reading/checking existence/etc? should consider it's own mocked files first, but then also the real file system
I don't need a "merged traverse / iterate" (yet), if the functions above work

Describe alternatives you've considered

recursively deep-scan the directory twice - before an after the test

could be done without a library
ugly
"lots" of wasted time

recursively deep-scan the directory once and use MockFileSystem

wasted time

use a run directory copy for every test

not feasible for the amount of tests and files needed to be copied as a whole (even though they might not be used)

Additional context
It's a test for a custom company VSIX. The files to be copied/mocked are an entire C#-Solution, using all of the features of said VSIX.

That sounds very interesting, thanks for contributing this idea!
Did I get it right that what you want is something like this:

var fileSystem = new FileSystem();
fileSystem.File.Create("real.txt");

var overlayFileSystem = new OverlayFileSystem(fileSystem);
Assert.True(overlayFileSystem.File.Exists("real.txt"));

overlayFileSystem.File.Create("virtual.txt");

Assert.True(overlayFileSystem.File.Exists("virtual.txt"));
Assert.False(fileSystem.File.Exists("virtual.txt"));

That's correct. And to give some more examples:
fileSystem.File.WriteAllText("real.txt", "abc");
overlayFileSystem.File.WriteAllText("real.txt", "xyz");

Assert.AreEqual("abc", fileSystem.File.ReadAllText("real.txt"))
Assert.AreEqual("xyz", overlayFileSystem.File.ReadAllText("real.txt"))

overlayFileSystem.File.Delete("real.txt");
Assert.False(overlayFileSystem.File.Exists("real.txt"));
Assert.True(fileSystem.File.Exists("real.txt"));

The 'layered delete' could be done in different ways (a bool in MockFile, a singleton, null) so not sure whats the 'best'.
And e.g. I don't need an overlayFileSystem.File.UnDelete() since one would use a new overlay per test. But in theory it could be done. (But that's obviously specific to OverlayFileSystem, not IFileSystem)
I could also do the implementation myself if you need help.

I like this idea a lot. Let me just think a bit whether I want to have it as part of this repo or as a side gig.

OK, so I though a bit about this: I'd prefer to provide this in a separate package built outside of this repository. While I think it's a very very good idea, I don't think it's a core concern of the library that I want to maintain over the longer term.
If you want I could create you a repository within the System-IO-Abstractions group with you as primary maintainer. Just give me a quick ping here if you want that.
Thanks again for your detailed samples and explanations!

Sorry for responding late. I had to think about it a bit.
While I appreciate the offer, I'm not so keen on being a sole maintainer. I'd still offer to write the initial implementation, but I'm not sure when and if I could then may be able to keep up with (breaking) changes.

Sorry for responding late. I had to think about it a bit.
While I appreciate the offer, I'm not so keen on being a sole maintainer. I'd still offer to write the initial implementation, but I'm not sure when and if I could then may be able to keep up with (breaking) changes.

Fully understood. I am in the same situation where I can hardly keep up with my all the stuff I'm involved in, and adding this feature would for sure not make it better 😁
So, if anyone reading this would like to help @LukasGelke starting and maintaining the new project say so and I can support with the bootstrapping a bit!


Import old data

Hey,
I use the Libre 3, is it possible to add a feature to import the last weeks of usage from Libre link? Because I just use the app since today and I would love to import my data.
also if this app is closed for a few days, is the data still imported from Libre linkup to health app or is it lost?

Hello,
thank you very much for the message. Unfortunately, LibreLinkUp does not provide the possibility to get data over a longer period of time. All data (that I get there per request, which is about 12 hours) are imported by me as well.
Many greetings
Reimar


Dead code

There is dead code that should have been removed long ago when we abandoned work on a climber for strategic reasons.  I found both "new" and "old" climber code on Dev that is not used for anything.
There is no need for dead code to be dragged along.  We have version control (Git) so it should be removed.  If we ever need it again, we can use version control to get it back.

A pull request to remove it is awaiting code review on #110

Done in the dev cleanup branch


Release v1.1.6

Update OWNERS file
ROSA: Support cluster-wide proxy during cluster creation
Add missing update message for default machine pool
Handle minor issues in delete handling
clusters: Fix proxy config validations
updated pendo event for rosa
Clarify verify permissions cmd is only for non-STS clusters
fix minor typo
Check for pre-existing operator roles and error if they exist
add rosa upgrade account/operator role
removed --enable_proxy argument
changing cluster proxy attirbutes to pointers
aws: Add ROSACLI/version to User-Agent string
validate sts roles on sts cluster upgrade
fix interactive setting of mode option
SDA-5022 : fix operator role upgrade being blocked by account role upgrade
SDA-5017 : improve cluster upgrade manual mode to print operator role commands
SDA-5018 : improve cluster upgrade manual flow to prompt user to upgrade roles
clean/fix role validation for upgrade
Added support for master-iam-role
Add ocm user role
STS: Create OCM Role
added support for operator prefix
add interactive mode for link user/ocm role
added edit support for UVM

@vkareh  PTAL

/lgtm


Added project and fixed indentation

Added a new project to "Helpful Materials" and fixed some indentation errors

Great :)


Upgrade pip to 20.2.3

It looks like some of the warnings/errors that pip outputs have changed and we're no longer parsing these correctly. I'll try to find some time to dig into those today

I didn't saw https://github.com/dependabot/dependabot-core/pull/2586 before opening this, sorry for duplication.


fix: r2 for lead variant is always 1

✨ Context
Related to bug when credible set size is zero for 10445 CSs.
The problem is that r2 for the lead variant is 0 for 100% cases.
There are two possible fixes:

Ensure that r2 for lead is always 1 in the ld annotation step.
Add the flag "[LD block contains no variants at the required R^2 threshold]" as an exclusion criterion.

This PR fixes 1). Good way to go, but requires recalculation of PICS credible sets.

🛠 What does this PR implement

🙈 Missing

🚦 Before submitting

[ ] Do these changes cover one single feature (one change at a time)?
[ ] Did you read the contributor guideline?
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you make sure there is no commented out code in this PR?
[ ] Did you follow conventional commits standards in PR title and commit messages?
[ ] Did you make sure the branch is up-to-date with the dev branch?
[ ] Did you write any new necessary tests?
[ ] Did you make sure the changes pass local tests (make test)?
[ ] Did you make sure the changes pass pre-commit rules (e.g poetry run pre-commit run --all-files)?

@DSuveges

It is still possible that the lead variant for some reason not in the LD set, so the locus object remains empty. Downstream there's no validation for mandating non-empty locus object.
The method for annotation has method "_rescue_lead_variant" that is run before it, so it is there in 100% cases.
However it adds it only when ldSet size is 0. In the freeze6 it is always there.

This action changes the data and will prevent these credible sets being flagged with the NOT_QUALIFYING_LD_BLOCK flag. It might be desired though...
It will be better. The flag clearly indicates that something is wrong here. Alternatively, we can just add the flag to exclusion and filter these CSs out. No needs to recalculate everything. I would actually say it is a better strategy now.


Choice of starter on project creation

Suggestion: it would be nice to give a choice of starters to allow users to bootstrap more complete projects using the GUI.
A first version could just include a choice between different Gatsby starters
Eventually, a more complete solution could allow for more customization using an Ignite boilerplate/plugin (will soon support both React & React Native). For example:

Would you like to statically type your code?
-> No
-> Yes

Which of these would you like to use for static typing?
-> Flow
-> TypeScript
-> Reason

This might be out of scope for this project though.

@sw-yx is working on a new starter showcase for Gatsby https://github.com/gatsbyjs/gatsby/issues/5334
One thing that is coming out of that will be a YAML file with details about each starter. This could be downloaded into Guppy to power a starter selector UI. We've discussed building a GraphQL API for starter info as well in the future but that's pretty tentative and the YAML file should be perfectly sufficient in the meantime.

Suggestion: it would be nice to give a choice of starters to allow users to bootstrap more complete projects using the GUI.
A first version could just include a choice between different Gatsby starters

Totally agree! I had actually wanted to include this at first, but ultimately I wanted to just ship it and see if the community could help add support for things like that. I imagine rearranging the onboarding a bit so that an icon is chosen before the project type. That way, project type can lead to a new screen that includes a list of possible starters.

Eventually, a more complete solution could allow for more customization using an Ignite boilerplate/plugin (will soon support both React & React Native).

I'm hesitant to go down this road, at least during project initialization. I want to keep the number of choices to a minimum, where the user isn't prompted to make a bunch of choices they may not understand. Starters kinda have to be done right-away, since that's how they work, but things like adding a type-checker can happen whenever, and shouldn't block a project from being created.
I can imagine having another module on the project page, though, for static typing (and any other addons that are valuable). The longer-term vision is for the "Tasks" module to only exist for user-defined scripts; all scripts that come with CRA/Gatsby should have their own little module that can be customized for the task at hand.

One thing that is coming out of that will be a YAML file with details about each starter. This could be downloaded into Guppy to power a starter selector UI. We've discussed building a GraphQL API for starter info as well in the future but that's pretty tentative and the YAML file should be perfectly sufficient in the meantime.

Yay! YAML sounds great, looking forward to it.

OK, I'll have a look at this after finishing the reinstall feature.
I think it should  work by adding a Gatsby Starter Selector modal for picking the starter.
The starter search can be done similar to the Dependency Search box with Agolia Instant Search.
I would add the button at the end of the creation flow for Gatsby. But that should be no problem to change later.
The data for search & rendering the infos are picked from starter.yml.
I'll check if I can use Gatsby yaml transformer for converting the yml file to json.
In separation of the UI modal. I'll implement project creation with a starter by adding a url in a text input so the project creation is working (with-out the UI for selecting the starter). Maybe I'm starting with this.
This is blocked by PR #292. Or I'm starting a new branch based on branch refactor-project-types. I think the refactoring PR is ready. I'm just waiting for an approving review feedback.
So my implementation steps are like this:

Add starter feature to create-project.service & add a minimal UI for the URL
Improve UI by adding modal component GatsbyStarterSelectionModal to Gatsby project creation.


Testing alert rule brings about unexpected evaluation behaviour

Bug Report
What did you do?
I have the following test case (inspired by RobustPerception's blog post), which is bringing about unexpected behaviour.
groups:
- name: ssl-certificates
  rules:
  - alert: SSLCertificateExpiringIn2Weeks
    expr: ((probe_ssl_earliest_cert_expiry{domain=~"https.*"} - time()) < (86400 * 14))
    for: 1m
    labels:
      severity: warning
      environment: some_environment
    annotations:
      summary: The summary
      description: The description

And the relevant test file:
---
rule_files:
  - ../rules/ssl-certificates-alerts.yml
evaluation_interval: 1m
tests:
  - input_series:
      - series: probe_ssl_earliest_cert_expiry{domain="https://example.com"}
        # 1209660 triggers alert
        # 1209659 does not trigger alert
        values: '1209659'
    alert_rule_test:
      - eval_time: 2m
        alertname: SSLCertificateExpiringIn2Weeks
        exp_alerts:
        - exp_labels:
            severity: warning
            environment: some_environment
            domain: 'https://example.com'
          exp_annotations:
            summary: The summary
            description: The description

Unless I am missing something (which could easily be the case, I find the way one defines tests for alerting rules complex and a little bit cryptic; I am honestly never sure whether I'm doing it right or not), I don't understand why 1209660 triggers the alert and 1209659 does not.
Shouldn't I provide timestamp values?
I was initially providing<PHONE_NUMBER>, which in relative unix timestamp means "in 10 days" (less than 2 weeks). But this does not bring about any alert and I fail to understand why.
What did you expect to see?
See above
What did you see instead? Under which circumstances?
See above
Environment

System information:
Darwin 19.0.0 x86_64

Prometheus version:

prometheus, version 2.13.1 (branch: non-git, revision: non-git)
  build user<EMAIL_ADDRESS>  build date:       20191018-01:35:32
  go version:       go1.13.1

And:
promtool, version 2.13.1 (branch: non-git, revision: non-git)
  build user<EMAIL_ADDRESS>  build date:       20191018-01:35:32
  go version:       go1.13.1

Alertmanager version:
N/A

Prometheus configuration file:
N/A

Alertmanager configuration file:
N/A

Logs:
N/A

This is because of the for clause. If you set it to 59s or evaluate the alert at 3m then the alert fires.
I'm closing it for now. If you have further questions, please use our user mailing list, which you can also search.

@simonpasquier what exactly is "because of the for clause"? Can you please expand a bit more on this for everyone's future benefit?
The metric/query in question returns a unix timestamp value. But the values I reported setting above are not. They don't make sense in terms of unix timestamp values.
I'm mostly interested in the following:

I don't understand why 1209660 triggers the alert and 1209659 does not. Shouldn't I provide timestamp values?

Thanks.

As per https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#defining-alerting-rules

The optional for clause causes Prometheus to wait for a certain duration between first encountering a new expression output vector element and counting an alert as firing for this element. In this case, Prometheus will check that the alert continues to be active during each evaluation for 10 minutes before firing the alert. Elements that are active, but not firing yet, are in the pending state.

I misread your initial description and thought that 1209659 triggered the alert at t0+2m while 1209660 didn't (because the alert is pending, not firing). FWIW this is what I'm observing locally so not sure what happens with your setup.
I think that when no firing alert matches, promtool could check whether a pending alert matches and surface it to the user.

@simonpasquier that still does not answer the question why I have to provide the non-unix timestamp values such as i.e. 1209659  (7 digits, which converted to to human readable date equates to Thursday, 15 January 1970 00:00:59) instead of i.e.<PHONE_NUMBER> (10 digits, which converted to to human readable date equates to Friday, 25 October 2019 19:25:21).
I'm also not really sure the for clause is the thing one ought to be focusing here.
Is it because of a discrepancy between the expr defined and the input_series being used?
Does promtool expect the entire expr to be mocked, or just the metric?

that still does not answer the question why I have to provide the non-unix timestamp values

the initial time for unit alert tests is 0, eg Jan 1 1970 so samples representing timestamps should be relative to the epoch.
I'm not sure what you call "discrepancy". In general I would recommend for consistency to have samples that span to the last rule evaluation time.

@simonpasquier thank you for your prompt replies on this! Please see below.

I'm not sure what you call "discrepancy". In general I would recommend for consistency to have samples that span to the last rule evaluation time.

Let me explain a bit further.
Given the following expr:
# If result is "less than 14 days", then notify/alert
expr: ((probe_ssl_earliest_cert_expiry{domain=~"https.*"} - time()) < (86400 * 14))

And the following input_series:
- series: probe_ssl_earliest_cert_expiry{domain="https://example.com"}
   values: '1573464347'  # GMT: Monday, 11 November 2019 09:25:47, Relative: In 5 days

Will Prometheus/promtool take the value defined in values and evaluate/apply it against the whole expression, including the time() function, etc? Or will whatever is defined in series actually be the expression?
In other words, given the above, will Prometheus/promtool do this?
(1573464347 - time()) < (86400 * 14))

Or do I need to write this?
- series: (probe_ssl_earliest_cert_expiry{domain="https://example.com"}  - time()) < (86400 * 14))
   values: '1573464347'  # GMT: Monday, 11 November 2019 09:25:47, Relative: In 5 days

If it's the latter, then this is what I define as "discrepancy". As one would have to define the whole expression instead of just mocking the metric used in the expr and its result.
Please let me know if it's not clearer after this.

the initial time for unit alert tests is 0, eg Jan 1 1970 so samples representing timestamps should be relative to the epoch.

Hmmmm. That means one would have to specify i.e.<PHONE_NUMBER> and not 1209659  or 12096560, then. Is that correct?

Will Prometheus/promtool take the value defined in values and evaluate/apply it against the whole expression, including the time() function, etc? Or will whatever is defined in series actually be the expression?

The former. input_series represents streams of datapoints where series represents a timeseries (metric name + a set of labels (key/value)) and samples the values at every interval.
Regarding time() it will return 0 when eval_time: 0m, 60 when eval_time: 1m, and so on.

The former.

OK. Thanks for the clarification. It means only the metric query needs to be written (i.e. probe_ssl_earliest_cert_expiry{domain="https://example.com"}). That's good.

series represents a timeseries (metric name + a set of labels (key/value)) and samples the values at every interval.

By samples, did you mean values? As defined as follows?
- input_series:
     - series: ...
        values: ...

Regarding time() it will return 0 when eval_time: 0m, 60 when eval_time: 1m, and so on.

Oh. Does that mean that in order to test the following:
((probe_ssl_earliest_cert_expiry{domain=~"https.*"} - time()) < (86400 * 14))

Which, as I wanted to test, would translate to:
(1573464347 -<PHONE_NUMBER>) < 1209600

I would need to write this?
  - input_series:
      - series: probe_ssl_earliest_cert_expiry{domain="https://example.com"}
        values: '1573464347' # GMT: Monday, 11 November 2019 09:25:47
    alert_rule_test:
      - eval_time:<PHONE_NUMBER>s  # GMT: Wednesday, 6 November 2019 16:52:23
        alertname: SSLCertificateExpiringIn2Weeks
        exp_alerts:

Because if that's the case, it would take ages to run a test like this.


Retire the deploy/ directory

Is there an existing issue for this?

[X] I have searched the existing issues

Problem Statement
KIC 2.0 repo has 2 competing directories with the same purpose: deploy/ and config/.
Everything (docs, tutorials, etc.) links to deploy/. Kubebuilder autogenerates config/.
Proposed Solution
There seems to be consensus that the config/ is technically superior to deploy/, but:

deploy/ has specialized kustomizations for postgres and enterprise
there needs to exist a reasonable upgrade path for users who installed KIC using deploy/

Additional information
No response
Acceptance Criteria

...
[ ] The final solution makes it possible to install enterprise and postgres.

It would appear there is some overlap between this and https://github.com/Kong/kubernetes-ingress-controller/issues/1210, or perhaps this is a duplicate ultimately.


Create Export tool for Migration

As requested by a great number of forum posts, thought I'd get this up here for the sake of discussion and tracability.
My understanding is that the goal is to create a utility that exports concrete5 5.6 content into an XML format compatible with the 5.7 sample content importer.
The new generator should be able to accomplish exporting the following:

Export only things with a certain package ID
Export only content beneath a certain page node
Export only content created after a certain amount of time

via #1991


ROX-10895: Detect role bindings to cluster roles within namespace RBAC evaluator

Description
The RBAC evaluator gives the ability to provide an overview of permissions within either a specific cluster or namespace for e.g. service accounts, users, groups.
This is done by inspecting the role bindings within the specific namespace / cluster, resolving the bound role and subject, and the given permissions for the specific subjects.
As a high-level overview of RBAC within Kubernetes, refer to this documentation.
Now, role bindings, which are scoped to a specific namespace, have the ability to bind to cluster roles. The role binding won't grant permission on the whole cluster, but apply the permissions defined within the cluster role to subjects within the specific namespace.
Previously, for namespaced RBAC evaluation (i.e. when a user doesn't have an access scope with full cluster access), we skipped role bindings which bind to cluster role bindings.
This has some unwanted drawbacks:
Take the following role binding as an example:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-rolebinding
  namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dh-test
  namespace: default

The role binding will grant the dh-test service account within the namespace cluster-admin permission, as defined within the cluster role:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-admin
rules:
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - '*'
- nonResourceURLs:
  - '*'
  verbs:
  - '*'

However, when viewing that specific service account within e.g. the UI / API with a scope that doesn't have full access to the cluster, e.g. only the default namespace, he will get the impression that the service account has no permissions available:

This gives a wrong depiction of the actual RBAC permission state within the specific namespace.
Instead of confusing people with limited access scopes for this particular issue, we will allow them to view permissions of cluster roles, in case they have role bindings which are binding them, irrespective of whether they have the full cluster in their access scope.
This PR will do so, on a conditional basis, and only elevate the context for retrieving cluster roles. The overall behavior will stay the same for non-cluster roles.
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
1. Create an access scope that is scoped to a single namespace, e.g. `rox-10895`.

2. Create a serviceaccount + rolebinding within the namespace the access scope is scoped to:
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: null
  name: dh-test
  namespace: rox-10895
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rolebinding
  namespace: rox-10895
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: dh-test
  namespace: rox-10895

3. As admin user / user with full cluster scope, check the service account within the UI and observe that the service account has permission to change _everything_ within the namespace (Config Management -> RBAC -> Service Accounts).

4. Switch to a user that has a role which has the previously created access scope.
5. You should observe the same permissions on the service account albeit the specific user doesn't have full access to the cluster (Config Management -> RBAC -> Service Accounts).


dbt clean does not respect the project-dir if provided

Describe the bug
If I am not in the project directory and run dbt clean --project-dir <path>. DBT won't clean the directories starting from the project directory. It cleans it from the current directory.
Steps To Reproduce
go out of the project directory and pass the path to directory to the --project-dir flag.
dbt clean --project-dir <path>

Expected behavior
I expect dbt to clean the directories recursively defined in clean-targets of dbt_project.yml.
System information
Which database are you using dbt with?

[x] postgres
[ ] redshift
[ ] bigquery
[ ] snowflake
[ ] other (specify: ____________)

The output of dbt --version:
installed version: 0.18.0
   latest version: 0.18.1

Your version of dbt is out of date! You can find instructions for upgrading here:
https://docs.getdbt.com/docs/installation

Plugins:
  - bigquery: 0.18.0
  - snowflake: 0.18.0
  - redshift: 0.18.0
  - postgres: 0.18.0

The operating system you're using: macOS 10.15.6
The output of python --version: Python 3.7.2

Good find, @feluelle! I'm not sure if this has worked in the past, but I agree it's the intended (and expected) behavior.
I'm hopeful that this would be a straightforward fix, involving the addition of move_to_nearest_project_directory to the clean task. The contributor should also look to add a test here.
Is this something you'd be interested in contributing?

Yes, I would love to work on that @jtcohen6 :)


Code snippet in GitBook has a syntax error

In section 3.3 of the GitBook (Creating your own formatting functions), there is an example code snippet which replicates the default formatting function as a jumping off point for customization.
If you try to run that code directly as-is, you get a JS syntax error: Invalid shorthand property initializer. This is because on line 34 of the snippet, the params passed to getLocalLink and getWebLink are set with = instead of :. Replacing them resolves the error.
(sorry if this is the wrong place to post this issue, also this is barely an issue)

Thanks so much for flagging - definitely the right place! Corrected it a few weeks back, so I'll close this :)


Introduce Mac OS X to CI

With the oncoming changes to macOS (namely dropping OpenGL), we will need to wait until Vulkan support is brought into the engine to support macOS Catalina and above. With that being said, we can currently support macOS / Mac OS X variants below as certain Macs (around 2010+) come with OpenGL 4.1 built in.
We should add a Microsoft-hosted build agent to allow the CI to test against Mac builds as well. This allows us to test our code against Macs to ensure our code won't break if an end user is trying to use a Mac instead of Linux or Windows.

Something else of interest here - we may be able to compile once against MoltenGL if available to support both newer and older Macs - more research is required, however.

Added macOS builds to CI in #428


GTK 2 v 3

I started merging @agl go-gtk into @mattn go-gtk after I realized the @agl fork had broken error reporting : https://github.com/agl/pond/issues/143#issuecomment-72358811
I’ve started work on a pull request for the GTK 2 changes, but @agl switched to GTK 3 at some point.  And Pond now uses GTK 3’s Grids everywhere.
Anyone considered adding GTK 3 support here?  I’m actually unsure how go-gtk should best support both GTK 2 and 3 :
Separate gtk2 and gtk3 directories with user settable gtk symlink to gtk2 or gtk3?
If so, what about the common code?  Just a convention that gtk[23]/common.go should be (almost?) the same?  A go generate script that builds 'gtk[23]/common.gofromgtk+/common.go` with patch files?  etc.

Alright, there isn't nearly enough support for conditional compilation in Go, so the correct solution appears to be to split the files into modules called (gdk|gtk|gtkspell)[23] that live in the directories gdk|gtk|gtkspell as appropriately.
To the degree that common code remains after the split, we should extract it into common files and add use go generate preprocessor directives to build the shared modules, ala
//go:generate cpp -P -CC -D GTK_PACKAGE=gtk3 -o gtk2_common.go gtk_common.go
Any thoughts?

Oops, there is no obvious way to cleanly handle the cgo pkg-config lines with go's build tags, which limits the options still further.

After a brief IRC chat it appears the best solution is to rename all the current v2 modules to names like gtk2 and add v3 modules like gtk3.  And ask all code that depends upon go-gtk to change their imports.
I disliked this because it creates duplicate common code, but that could be addressed with scripts or whatever.

umm, probably this is not the right place to ask, but is there any development for supporting gtk3?

I placed any updates on gtk3 support in this thread : https://github.com/agl/pond/issues/143
At some point, I began updating mattn's current go-gtk for gtk2 with agl's changes, primarily because it'd resolve our problems with pond not reporting gtk error messages correctly, but I laid it aside for various reasons.
There is an underlying problem that Go is designed for controlled corporate environments and does not play well with others.  We'd need conditional complication support to make go-gtk support both gtk2 and gtk3 cleanly.  Ain't clear if folks here would be interested in dealing with that once it was done.  Now the Go way would be to have two separate go-gtk2 and go-gtk3 projects, which sucks.  And we've nobody interested in maintaining go-gtk3 anyways, so that's out.  I'd actually recommend you avoid using Go for any projects that need heavy external libraries, like non-web GUIs, use Rust or Python or something instead.
That said, if you're interested in maintaining a go-gtk3, then I can show you want I was doing to port agl's changes for gtk3.

@burdges :

"I'd actually recommend you avoid using Go for any projects that need heavy external libraries, like non-web GUIs, use Rust or Python or something instead."

What if I simple do not like Rust's syntax, Python is too slow for my project and want static-typing?
Moreover, I'd like to avoid JS-stuff for my GUI, so wonder what recommendation you have and/or whether something is going to change in the future in regard to the fact "that Go is designed for controlled corporate environments and does not play well with others." ?

What if I simple do not like Rust's syntax, Python is too slow for my project and want static-typing?
Actually my requirement was pretty much like you, don't want to learn Rust, Python is slow and i wanted static-typing.

@gour After fiddling with gotk3, gtk, swig for few days, i ended up ditching gtk. Using gtk (or external lib) in go is real pain, specially when you need cross-platform (read f*ing Windows) support.  After researching alternatives i choose wxWidgets and gRPC (protocol buffer based rpc). The main logic and database stuffs are in go which acts as a grpc server. GUI is completely in C++ which receives data using grpc and does GUI with wxWidgets. So far this is the best way to do GUI apps in go IMO. Now this decision is also based on other requirements of this project i'm working on, so your milage may vary depending on your use case.

@sarim Thank you for reply.

Using gtk (or external lib) in go is real pain, specially when you need cross-platform (read f*ing Windows) support.

Ohh, can you provide some more info in regard?

After researching alternatives i choose wxWidgets

Well, I want(ed) to avoid using {C, C++, Java} directly.

and gRPC (protocol buffer based rpc). The main logic and database stuffs are in go which acts as a grpc server. GUI is completely in C++ which receives data using grpc and does GUI with wxWidgets.

Thank you for gRPC pointer, I'll check it out.

So far this is the best way to do GUI apps in go IMO. Now this decision is also based on other requirements of this project i'm working on, so your milage may vary depending on your use case.

Sure...that's why I'm still considering to use FPC (Free Pascal) with Lazarus/(fpGUI)...

Ohh, can you provide some more info in regard?

Well, i wanted to use CGO to mix go codes with native(c/cpp). Go 1.5 added new buildmodes (namely c-archive, c-shared), but those aren't supported/implemented in windows.
There are some attempts at creating directly opengl based cross-platform gui library in go. Something like that would be the proper and painless way to do GUI in go IMO. Wait a few years and see if something like that appears :P

Well, i wanted to use CGO to mix go codes with native(c/cpp). Go 1.5 added new buildmodes (namely c-archive, c-shared), but those aren't supported/implemented in windows.

I also have a need to bind 3rd party C library, so good to know. ;)

There are some attempts at creating directly opengl based cross-platform gui library in go. Something like that would be the proper and painless way to do GUI in go IMO. Wait a few years and see if something like that appears :P

I'm monitoring andlabs's libui and ui attempts.

@gour What did you finally select for your gui stuff? All of your points are application for me as well, don't want C/C++, learning rust is too painfull (and I don't know how much cross platform GUI is supported there).

"I'd actually recommend you avoid using Go for any projects that need heavy external libraries, like non-web GUIs, use Rust or Python or something instead."
@sarim Just checking, is this still valid in 2017?

@princegoyal1987 Well, the project is on hold due to other, mostly non-computer-related obligations, but if I'd do it in Go, I would take a look at this project.

well i'm not keeping tabs with these gui attempts, but did some research back at late 2016. Still didn't like any go gui offerings. Can't suggest you anything if you don't want c++ :P perhaps try electron?
@gour Kinda skimmed over therecipe/qt source when it first came out. Bindings were generated manually, so discarded it. What happens when in future project gets abandoned but you want to use latest qt? Using something automated like SWIG is better bet. But don't know what is the condition of the project now. So my opinion might be outdated.

@sarim Then I might go with GRPC + Go + C++ approach. What do you suggest for GUI there? WXWidgets vs GTK, who wins? I need printer (paper printer) support as well. Any idea about printer support on those? (its going off topic of this thread, but I have to ask :P)

IMO Wx/Qt easily wins over GTK.
The project i was talking about (in 2015) in this thread had extensive printing requirements. WxWidgets has nice printing support. You can draw your stuff yourself in c++ or use any external library. I needed tables and reports etc.. so i used jasperreports. I ran it in its own java server, go server sends requests to jasper via http and gets the pages in pdf. Then pdf is sent via grpc to c++ gui client. Using mupdf (a c pdf library), i read the pdf to pixels and draw the pixels to printer via wxPrintout class.
But if you don't need table, report, graphs etc... you can probably use wxHtmlEasyPrinting class. Also check out wkhtmltopdf.org.
The process with Qt will be similar.

I'm going to close this since I've migrated completely to Rust.  And Go is not likely to ever abandon the requirement to vender dependencies since Google can afford to work that way.  I'll leave you with a quote though : "We were strongly advised to not use cgo, by people who have used it extensively."


Active directory groups patch

Hi @jtpenny
Can you give me some hints what doesn't work at the moment and what you are fixing?

Hi @strebl
We're connecting to Windows Server 2008 R2 and need to pull a user's groups via Auth::user()->groups for role based access to areas of the app. Currently Auth::user()->groups returns groups from Windows Server 2008 R2 with the first three letters chopped off because the code is attempting to remove DC= from the front of the string. My update checks to see if the string begins with DC= and removes the first three characters only in that situation.

Will look into that tomorrow. Thanks for the explanation!

@jtpenny Sorry for not responding over 13 days....
I just released the laravel 5.1 version and I'm now ready to merge your pull request.
However there merge conflicts now.
Do you mind to update your PR or create a new one?