no module named 'hoymiles wifi.protobuf' + frozen importlib

Hi, i have installed python3 on my linuxmint and 'hoymiles-wifi-0.1.9' via setup.py aswell the protobuf-compiler.
Laptop is connected to the microinverter network, gets the following back.
Traceback (most recent call last):
File "/usr/local/bin/hoymiles-wifi", line 33, in
sys.exit(load_entry_point('hoymiles-wifi==0.1.9', 'console_scripts', 'hoymiles-wifi')())
File "/usr/local/bin/hoymiles-wifi", line 25, in importlib_load_entry_point
return next(matches).load()
File "/usr/lib/python3.10/importlib/metadata/init.py", line 171, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/usr/local/lib/python3.10/dist-packages/hoymiles_wifi-0.1.9-py3.10.egg/hoymiles_wifi/main.py", line 14, in
File "/usr/local/lib/python3.10/dist-packages/hoymiles_wifi-0.1.9-py3.10.egg/hoymiles_wifi/dtu.py", line 37, in
ModuleNotFoundError: No module named 'hoymiles_wifi.protobuf'
something with my installation is not correct. maybe someone can help me, want to connect to the HMS 800W-T2 microinverter data, cause Android app is not working.
thanks in advance

probably the same thing as me ;
https://github.com/suaveolent/ha-hoymiles-wifi/issues/38
The problem lies in the new changes about frozen import.  To fix, I updated my version of python...  If not possible, you'll have to dig deeper and address this with a PR for using the right annotation.

thx for quick response
i have Python 3.10.12 installed; will update to latest Python 3.12.3 now and will tell the result here

I gave up after 5hrs reading and trying. Too complicated to get the pyenv running. I will buy now a Tasmota Smart Plug to get my Solar Data into Home Assistant.

Thanks for reporting, I will have a look at the issue.

@BassHunger  I could not reproduce the issue (neither on 3.9 nor on 3.10) can you describe how you installed the package?
Did you also try installing via pip (pip install hoymiles-wifi) ?

@BassHunger I misread your stack traces; the module that is supposed to be installed through "pip install" dependency management wasn't installed ;  No module named 'hoymiles_wifi.protobuf'.  If you did "pip install", then maybe you're not running the hoymile_wifi scripts from the same python interpreter, meaning the package is not installed for the python you're using.
This can happen when you changed venv by accident.  If you want to setup maybe an hour so we can troubleshoot outside my working hours, I would be glad to help :). I also want @suaveolent to be able to focus on the core and continue to maintain this package XD.

Just had the same issue,
$ python setup.py install
$ hoymiles-wifi
...
ModuleNotFoundError: No module named 'hoymiles_wifi.protobuf'

After checking the setup.py output closely, I found
package init file 'hoymiles_wifi\protobuf\__init__.py' not found (or not a regular file)

I just created an empty __init__.py inside the protobuf folder, and ran the install again, and it copied the protobuf folder as well.
...
creating build\bdist.win-amd64\egg\hoymiles_wifi\protobuf
copying build\lib\hoymiles_wifi\protobuf\AlarmData_pb2.py -> build\bdist.win-amd64\egg\hoymiles_wifi\protobuf
...

It worked afterwards.
$ hoymiles-wifi
usage: hoymiles-wifi [-h] --host HOST [--as-json]
...

$ python --version
Python 3.10.5

Great, thank you for sharing. I can add an empty inity.py


Generating Enough Episodes for Tennis

I've been trying to generate the same number of frames described in the paper for probing evaluations (35,000 train; 5,000 validation; 10,000 test), but for Tennis I am unable to do so because of the large number of duplicates in the collected episodes. May ask are how you were able to for the paper?
I've tried collecting episodes with different random seeds and up to 400,000 steps (to try and account for duplicates), but so far to no avail. I've succeeded in generating episodes for other games but just not Tennis. I believe this might be because the agent spends the majority of episodes refusing to serve the ball (an issue I've come across previously before).
tr_episodes, val_episodes,\
tr_labels, val_labels,\
test_episodes, test_labels = get_episodes(env_name='TennisNoFrameskip-v4',
    steps=50000,
    collect_mode="pretrained_ppo",
    seed=seed)

Yeah, it seems PPO doesn't do well on Tennis and probably converges to a degenerate policy. We didn't have the issue with duplicates when using a random policy though, and for PPO we just used as many non-duplicates for test as we could get, it's def not ideal.
Depending on your use-case, I guess you could a pretrained DQN / C51 (those seem to do well on Tennis), with a high enough epsilon to get diverse samples.

No worries, thanks for the clarification!


Installing BCM94360CD + adapter in a Mac Pro 4,1

At first this looked and sounded rather simple.  Then I opened my Mac and the new card and I realized all the I had found are not based on the 4,1 Mac Pro early 2009
I have the BCM94360CD and adapter that I want to install in my Mac Pro 4 1.  I've searched for hours and you above two post are the closest I come to getting a somewhat clear picture of how to install these card(s).
My question is on my old card installed on the Mac Pro 4 1 there are only two wires one is numbered 1 and the other 3 with an additional wire running under the card but I have no idea if this attaches to the card underneath?  On the new card I assume these wire 1 & 2 will attach to J1 and J3 respectively?
Some post say disconnect the old BT card.  Some say don't etc.
Where do I find a definitive answer on how to install the BCM94360CD and adapter along with all the wires and if I need an additional and longer antenna and where should that be installed and attached to the new card?
My best and thanks,  Cliff

I picked up an adapter that had a connector for the usb. I removed old bt and the usb connector that it used and spliced it to the one that came with the adapter. I ordered the bt antenna extender from osxwifi cause that was the only place I could find it. 11 dollars and broke the connector off the first one so ordered another. Handoff never worked though its the 4331 non ac not sure if its that or because of my usb3 cards interference.


Fix typo in test case

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Proposed changes
I fixed typo in test case for function node.
Checklist

[x] I have read the contribution guidelines
[ ] For non-bugfix PRs, I have discussed this change on the mailing list/slack team.
[x] I have run grunt to verify the unit tests pass
[ ] I have added suitable unit tests to cover the new/changed functionality

Thank you. 👍


Dependency package statistics

Hi
I had a look at the test server's package stats and I noticed that they no longer differentiate install vs install-dependency, etc.
http://nuget-preprod-0-v2gallery.cloudapp.net/stats/packages/Newtonsoft.Json?groupby=Operation
vs
https://www.nuget.org/stats/packages/Newtonsoft.Json?groupby=Operation

Adding @xavierdecoster

Thanks for reporting @JamesNK!
Found a bug in the new parser that strips off -Dependency from Install-Dependency in the custom CDN headers. A fix is on its way but unfortunately requires us to reparse history. Might take a day or two.


Fix @apply for polymer-like elements

Workaround for #518

Calling styleSubtree like this is pretty inefficient so this isn't a change we can accept.
Lit-html 0.14.0 and ShadyCSS 1.7.0 together should fix #518. However, it's important that when rendering a custom-element, it's easiest to ensure the necessary host-> client ordering by rendering in connectedCallback.


PP-2515 Get payments including refunds

WHAT

Introduced mechanism to switch between fetching transactions:

TransactionSearchStrategy fetches both charges and refunds
ChargeSearchStrategy fetches charges only, using the original implementation
The strategy is selected according to the REFUNDS_IN_TX_LIST feature flag.

The strategy and switching via feature flag are temporary. We intend to replace the TransactionSearchStrategy implementation after refactoring the data model to store charges and refunds in the same database table.

The implementation of TransactionDao is meant to be used a as drop-in replacement for ChargeDao when we want to take refunds into consideration while searching.

A transaction can be of two types charge or refund. Depending on whether we want to search for only charges or refunds, an optional payment type can be specified in the filtering criteria. The absence of a payment type in the search criteria implies all types are considered during the search.

The filtering criteria has been augmented to allow searching by refund status or charge status or any combination of both.

I would questions the selection of jooq for its value that is brining. Doesn't seem to make it any more readable or simpler. In fact the code looks a bit more cluttered than to how it would have been with native queries.
However, given the temporary nature of this Dao and the possibility of this being removed later on I'll probably be okay to use it.


Motion sensor also has Temperature and Ambient Light sensor

Do you plan to support these ?
After adding my motion sensor, i see 3 extra devices when i call the api:
http://<IP_ADDRESS>/api/----user----/sensors
These are the devices:  (didn't include the bridge)
"2":{"state":{"temperature":2021,"lastupdated":"2017-09-20T12:25:16"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none"},"name":"Thermostat 1","type":"ZLLTemperature","modelid":"SML001","manufacturername":"Philips","swversion":"<IP_ADDRESS>12","uniqueid":"00:17:88:01:02:03:0e:44-02-0402"},
"3":{"state":{"presence":false,"lastupdated":"2017-09-20T12:23:08"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none"},"name":"Hue motion sensor 1","type":"ZLLPresence","modelid":"SML001","manufacturername":"Philips","swversion":"<IP_ADDRESS>12","uniqueid":"00:17:88:01:02:03:0e:44-02-0406"},
"4":{"state":{"lightlevel":0,"dark":true,"daylight":false,"lastupdated":"2017-09-20T12:28:08"},"config":{"on":true,"battery":100,"reachable":true,"alert":"none","tholddark":16000,"tholdoffset":7000},"name":"Hue ambient light sensor 1","type":"ZLLLightLevel","modelid":"SML001","manufacturername":"Philips","swversion":"<IP_ADDRESS>12","uniqueid":"00:17:88:01:02:03:0e:44-02-0400"}

Hi, these devices are already supported by HueMagic? Simply select the Brightness and Temperature node and select your „Motion“ sensor.
Or did I misunderstood you?

Ok, I didn't know that.  Thought this was for some seperate device...
Thanks.

No problem. Please check out the README file on this repo to get more information about what you can do else with you motion sensor and HueMagic ;)


Programmatic runtime check to make sure the TS client generated is up to date with projects Prisma schema file

Problem
I keep having problems with outdated generated client. Sometimes I work on a shared DB where migrations are done by some other developer, so I don't have problems with missing field in my models, but I do run into unexpected where I have missing types when I forgot to run prisma migrate
Suggested solution
compute a SHA hash for schema and store it somewhere in the generated client.
Then print a warning or even throw an error when the hash mismatches.
Alternatives
a workaround I use now is https://github.com/capaj/prisma-generator-checker, but it is pain to set up in each prisma project and takes about 40 extra miliseconds on generation
Additional context

To make sure I understand correctly, you want Prisma Client to offer an API to confirm that the schema.prisma that is part of the app, is identical to the one included in the generated Prisma Client, that the app is using?
Your generator currently achieves that by writing the schema hash to .env in an env var on prisma generate (to reflect what the last generate Prisma Client got as input), and then offers an API that you can call on runtime that compares that hash, to a hash that is calculated from the current prisma/schema.prisma file? So if that file was modified since you last ran generate, it throws an error. Correct?
(I think you might potentially be able to reproduce the same functionality with a Client Extension already. The generated Prisma Client includes a copy of the schema.prisma that was used to generate it [and is used to start the Query Engine], and as your generator also does the prisma/schema.prisma is also available - then you can quickly checksum both and compare and do the same logic as your extension.)

Good to hear that.
How can I get the schema.prisma file at runtime.


pull request for e2e test at 01/24/2017 09:26:14

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Invalid html when non public categories have subcategories that are public.

The category_tree template tag will render invalid html when a non public category has public categories.
This is because the category loop will skip to the next depth (because the children depth is greater and they are not filtered out) without opening a tag. This leads to too many closing tags.
The solution is ofcourse to filter out all children of non public categories. But that might be not so easy 😄

I think this will be fixed by #3050

Haha sorry no this is a bug in that code. We run that in production, sorry

Closing as this is not an issue on master, but with PR #3050 where it's been addressed.


[BUG] - Should not open vote modal if proposal is closed

Briefly describe the bug.
While clicking on discord bot's notification, it open vote modal even if proposal is closed
How can we reproduce the bug?

Should not display modal in this case
Can you attach screenshots?
No response
Can you provide your device specific details below?
No response

Fixed https://github.com/snapshot-labs/snapshot/commit/02279c046a0fed2240319f76cf8e1b01d49473e2


Consider using rem instead of px for font-size

Valo theme isn't friendly to people with low vision. Here's why:

Related code: https://github.com/vaadin/vaadin-valo-theme/blob/master/typography.html#L10-L16

Additional reading:

https://nicolas-hoizey.com/2016/03/people-don-t-change-the-default-16px-font-size-in-their-browser.html
https://scotch.io/bar-talk/whats-new-in-bootstrap-4#toc-new-unit-rems-for-typography

Thanks for the suggestion!
What would it mean in practice? Should we just set  --valo-font-size: 1rem; or --valo-font-size: inherit;?
I suppose that might be a better default, as developers usually don’t remember to check these things, and we should encourage accessibility. If they want, they can still revert to using a fixed pixel value if they so choose.

If we change to using --valo-font-size: 1rem;, we should also add the following to the valo-typography style module:
html {
  font-size: 16px;
}

If we change to using --valo-font-size: 1rem;, we should also add the following to the valo-typography style module:
html {
font-size: 16px;
}

Please don't! From https://nicolas-hoizey.com/2016/03/people-don-t-change-the-default-16px-font-size-in-their-browser.html

These default font sizes were set by the device or browser vendors because it was the best size for reading. When you set your font-size in px units, you throw their work to satisfy their users/clients into the bin.

By setting the font-size in px for html, you will get the same issue and the "Font size" selector will become useless.


Could you tell me specification about B2B direct Connect?

[Enter feedback here]
Hi, Team.
In the following authentications cases, specification about B2B direct Connect? Some our customer's domain is "federated".
[Environmental information]
・Resorce of the Teams shared channel: Tenant A
・Tenants invited to the Teams shared channel: Tenant B
・User X in Tenant B federated for ADFS.
・User Y in Tenant B federated for 3rd party IdP.
[Case]
-Tenant A configures the applies of [Select Applications] in the inbound access settings of the cross-tenant access settings.
-Tenant A configures the permissions of [All external users and groups] in the inbound access settings of the cross-tenant access settings.
-Tenant B configures the permissions of [Users and groups of all tenant B] in the outbound access setting of the cross-tenant access setting.
[Question]
Q1: I could choose only "Office 365" in the Microsoft app when setting the app limit in the Inbound access settings. Is it correct?
Q2: User X can access Tenant A?
Q3: User Y can access Tenant A?
Q4: User X is "Staged Rollout" just now. User X can access Tenant A?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0a16a239-3c26-c839-6b40-a12afe1d5fba
Version Independent ID: b86ecce0-b57d-8d53-f3ae-cbd0f0fcbbba
Content: B2B direct connect overview - Azure AD
Content Source: articles/active-directory/external-identities/b2b-direct-connect-overview.md
Service: active-directory
Sub-service: b2b
GitHub Login: @msmimart
Microsoft Alias: mimart

@dshimogawa
Thank you for your feedback . We will investigate and update the thread.

@shashishailaj
Please allow me to send you a gentle reminder.
I want your reply by the end of next week.
I'm afraid you are busy, but we look forward to your reply.
Thank you.
Best regards,
Daishi

@dshimogawa , I am still testing few scenarios on this thread, will update you with my findings. Kindly allow me sometime , I should be able to update you by next week. Thanks.

Hi - Here are answers to your questions.
Q1: I could choose only "Office 365" in the Microsoft app when setting the app limit in the Inbound access settings. Is it correct? [josh] Yes this is correct. B2B direct connect only works with Teams Shared Channels, so we limited which apps can be used for direct connect.
Q2: User X can access Tenant A? [josh] Yes, as long as direct connect is configured between Tenant A and B
Q3: User Y can access Tenant A? [josh] Same answer as Q2
Q4: User X is "Staged Rollout" just now. User X can access Tenant A? [josh] Same answer as Q2

Feel free to reach out us if you have any additional questions. #please-close


feat(routeTable): ignoreRoutes to use route resource

Signed-off-by: haarchri<EMAIL_ADDRESS>
Description of your changes

added in RouteTable.ec2.aws.crossplane.io/v1beta1  a new field ignoreRoutes: true   to toggle the reconciliation of the routes array. Existing users wouldn't be affected and new users of RouteTable would set this to false and use inline routes / routes objects.
added RouteTableRef/Selector in Route.ec2.aws.crossplane.io/v1alpha1
changed all referencers/resolvers in ec2 v1beta1 to generated resolvers
added new examples

Fixes #1036 #657 #1037
I have:

[x] Read and followed Crossplane's contribution process.
[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested

create all resources and check status & up2date loops

NAME                                            READY   SYNCED   ID                      CIDR             IPV6CIDR   AGE
vpc.ec2.aws.crossplane.io/sample-vpc            True    True     vpc-0a809f17c9092bc64   <IP_ADDRESS>/16                 160m
vpc.ec2.aws.crossplane.io/sample-vpc2           True    True     vpc-0314043ee67ff9321   <IP_ADDRESS>/16                 160m

NAME                                               READY   SYNCED   ID                         VPC                     CIDR               AGE
subnet.ec2.aws.crossplane.io/sample-subnet1        True    True     subnet-0bf2f58645a1d813f   vpc-0a809f17c9092bc64   <IP_ADDRESS>/24        160m
subnet.ec2.aws.crossplane.io/sample-subnet2        True    True     subnet-03b419f501739c924   vpc-0a809f17c9092bc64   <IP_ADDRESS>/24        160m

NAME                                       READY   SYNCED   EXTERNAL-NAME
transitgateway.ec2.aws.crossplane.io/tgw   True    True    tgw-09525e8a7faab2f39

NAME                                                               READY   SYNCED   EXTERNAL-NAME
transitgatewayvpcattachment.ec2.aws.crossplane.io/tgw-vpc-attach   True    True     tgw-attach-0a26d607ca1bc2beb

NAME                                                               READY   SYNCED   ID                      VPC                     AGE
routetable.ec2.aws.crossplane.io/sample-routetable-ignore-routes   True    True    rtb-06dee28feef2c86ea   vpc-0a809f17c9092bc64   6m11s
routetable.ec2.aws.crossplane.io/sample-routetable                 True    True    rtb-0cb0739d9ed82cd1b   vpc-0a809f17c9092bc64   6m11s

NAME                                  READY   SYNCED   EXTERNAL-NAME
route.ec2.aws.crossplane.io/example   True    True     example

NAME                                                       READY   SYNCED   EXTERNAL-NAME
vpcendpoint.ec2.aws.crossplane.io/sample-vpcendpoint-rtb   True    True     vpce-0ecc812ddc03958a8

kubectl describe routetables sample-routetable-ignore-routes
Name:         sample-routetable-ignore-routes
Namespace:
Labels:       <none>
Annotations:  crossplane.io/external-create-pending: 2022-01-23T14:46:48+01:00
              crossplane.io/external-create-succeeded: 2022-01-23T14:46:49+01:00
              crossplane.io/external-name: rtb-06dee28feef2c86ea
API Version:  ec2.aws.crossplane.io/v1beta1
Kind:         RouteTable
Metadata:
  Creation Timestamp:  2022-01-23T13:46:48Z
  Finalizers:
    finalizer.managedresource.crossplane.io
  Generation:  4
  Resource Version:  1402559
  UID:               f89d75d4-9e09-41a5-927a-7d155e26ed71
Spec:
  Deletion Policy:  Delete
  For Provider:
    Associations:
      Subnet Id:  subnet-03b419f501739c924
      Subnet Id Ref:
        Name:       sample-subnet2
    Ignore Routes:  true
    Region:         us-east-1
    Vpc Id:         vpc-0a809f17c9092bc64
    Vpc Id Ref:
      Name:  sample-vpc
  Provider Config Ref:
    Name:  default
Status:
  At Provider:
    Associations:
      Association Id:  rtbassoc-0631a558869eee89e
      Main:            false
      State:           associated
      Subnet Id:       subnet-03b419f501739c924
    Owner Id:<PHONE_NUMBER>27
    Route Table Id:    rtb-06dee28feef2c86ea
    Routes:
      Destination Cidr Block:  <IP_ADDRESS>/16
      Gateway Id:              local
      State:                   active
      Destination Cidr Block:  <IP_ADDRESS>/12
      State:                   active
      Transit Gateway Id:      tgw-09525e8a7faab2f39
      Gateway Id:              vpce-0ecc812ddc03958a8
      State:                   active
  Conditions:
    Last Transition Time:  2022-01-23T13:46:49Z
    Reason:                Available
    Status:                True
    Type:                  Ready
    Last Transition Time:  2022-01-23T13:55:37Z
    Reason:                ReconcileSuccess
    Status:                True
    Type:                  Synced
Events:
  Type     Reason                         Age                  From                                      Message
  ----     ------                         ----                 ----                                      -------
  Normal   CreatedExternalResource        9m22s                managed/routetable.ec2.aws.crossplane.io  Successfully requested creation of external resource
  Normal   UpdatedExternalResource        9m21s                managed/routetable.ec2.aws.crossplane.io  Successfully requested update of external resource

Hi all,
any Updates on the status of this PR?

@Dkaykay  sorry for delay - i added the deprecation notice


Possible for --with-attribute to allow for multiple = in args?

Hello! Trying to annotate some output functions with an additional attribute, specifically:
UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvCdecl) })
or something similar.
However, no matter what I try to pass to --with-attribute this either doesn't work because the program expects a key/value(?) or it generates the proper bindings but there is no attribute output. I also looked into the TerraFX interop rsp examples where you bind to Flags but I'm still unclear on what that's doing/why attributes need a key/value configuration when I assume they should just be copy-pasted strings, as well as what the key/value would be in my case.

Right after typing this I figured out that the key is meant to be what you are binding the attribute to, and the value is the actual attribute. However I'm still running into issues because I have the constructor for the attribute that needs to be passed in for the array. I think it's a parsing issue re this:
https://github.com/dotnet/ClangSharp/blob/32bbe8a857ce8e723557ba50dc78b4126bf9717b/sources/ClangSharpPInvokeGenerator/Program.cs#L857
Other ways to get around it could be positional params, but the ctor for the attribute has no params so you have to do a field assignment inline.

I'm fine with a contribution that changes this to split on the first = rather than only require one =

Sounds great, made a PR here:
https://github.com/dotnet/ClangSharp/pull/471

Resolved with #471


Syntax highlighter + Autocomplete of arguments does not work in MSVCV 17.12

In this new update of MSVC, the extensions stopped working, only the autocomplete for initial commands (like \brief or \param, but without the names of the arguments of the function).
All sytax highlighting stopped. All features worked completely fine in 17.11 and before. I assume this is because some changes on Microsoft's end most likely.

@timeester3648 Thanks for the report! Fortunately, fixing it was trivial. I just released v1.7.1 of the extension. It is available on GitHub and on the VS marketplace. Depending on your Visual Studio settings, it might get updated automatically.
Also, I welcome stars on GitHub and ratings on the marketplace 😉


MOB-4391 [Quote] Add standard as vehicle category filters

JIRA
MOB-4391
DESCRIPTION
MOB-4391 [Quote] Add standard as vehicle category filters
Types of changes
What types of changes does your code introduce to the project?
Put an x in the boxes that apply

[ ] Bugfix
[X] New feature
[ ] Tech Debt
[ ] Breaking change
[ ] Documentation Update
[ ] Other: define what type of change it is

CHECKLIST
Put an x in the boxes that apply. You can also fill these out after creating the PR. This is simply a reminder of what we are going to look for before merging code.
Please review the guidelines for contributing to this repository.

[ ] All work relating to the ticket is complete (Code complete/Acceptance Criteria met)
[ ] Lint and unit tests pass locally (if appropriate)
[ ] Added tests that prove the fix is effective or that feature works (if appropriate)
[ ] Documentation (if appropriate)

SCREENSHOTS
[Add screenshots if any for changes you have made to the App/UI]

/retry


for cblite3.x support

is this tool support to open cblite3.x prebuild database?
i have trouble to open db there which was created using cblite 3.x sdk

Yes that is a supported scenario.  If you post details about the problem then perhaps I can help further.


Update documentation to tap the good formula

It's equivalent

Really? :/
I'm annoyed, it means I had another issue... I tapped neovim/neovim a long time ago and was still stucked to an old version (without :term). A friend of mine was stucked on the same version. After brew untap then brew tap neovim/homebrew-neovim we were able to have the an updated version of neovim.
If they are equivalent, do you have any idea what happened to us?
Thanks :)

homebrew uses different commands to upgrade a HEAD package:
https://github.com/neovim/homebrew-neovim#usage

oh! :open_mouth: ... yes... I just missed this part.
Thanks for the help.


Make base64 encoded images collapsible

embedding images via base64 is generally awesome ❤  thanks for your great work!
Would you approve a pullrequest that would do the following?
Current Behavior

paste an image
base64 code makes me scroll a lot to get before/after the image in the text

Expected Behavior

paste an image

base64 code is collapsed by default

easily get before / after the base64 encoded image

Visual
https://github.com/nhn/tui.editor/assets/26610733/eef6961f-0809-4861-82f6-25b6b965801e
partly relates to https://github.com/nhn/tui.editor/issues/2860

Another option would be a shorter temporary value like {{TOAST_IMG_1}}. that gets replaced with the pasted image data before returning final or rendered markdown.


Command "api.raml" is not defined.

When I run: raml2html.phar -i api.raml -o /tmp/api.html
I receive:

  [InvalidArgumentException]
  Command "api.raml" is not defined.

although the api.raml file exists...

Hello, @ddossot
Your need execute command  raml2html.phar generate -i api.raml -o /tmp/api.html

Oh boy.

Sorry.

I thought I was using the other HTML generator (ie raml2html -i api.raml -o /tmp/api.html, no command needed like generate)... tool confusion :sob:


Your GStreamer installation is missing a plug-in

[00:00:00.488] (b6f7d020) ERROR  Your GStreamer installation is missing a plug-in.

How are you installing it?

it's work after install!

Awesome :-)


I want find middle ( or more close to middle) value not median value. is this exist?

let a = [11.0, 2.0, 5.0, 9.0, 10.0, 10.0, 1.0]
a's median value is 9.0
but that's not my purpose, I want find value the most close to middle value between 11.0 and 1.0, and it would be 5.0
Is this exist algorithm?
If may not being. I want update that.

Hi @singcodes,
Could you calculate the mean of a and then find the element in a that is closest to the calculated mean? E.g.
let items = [11.0, 2.0, 5.0, 9.0, 10.0, 10.0, 1.0]

// Use reduce function to sum all the items together then divide by the count
let mean = items.reduce(0.0, combine: +) / Double(items.count) // 6.857142857142857

// Enumerate through all the items and find which item is closest to the mean
let closestItem = items.enumerate().minElement { abs($0.1 - mean) < abs($1.1 - mean) }!

print(closestItem.element) // 5.0

😆 yeah, that's right. thanks! @chris-pilcher.


tests: boot: mcuboot_recovery_retention: Fix testcase

Fixes an issue with the expected output of this test having changed slightly

Fixes #83274


Introduced $lookupType and $lookupTypes on a message part elemen...

...t which has declared an element instead of a type.
Within Client.prototype._invoke() the input.$lookupType  property will be used if input.$type is not available, providing a first hook for further parameter look ups to move in the right direction and resolve the desired property with the already existing/implemented code.
The $inputLooupTypes Array provides an object for each referenced complexType along the line of possible available children, setting its $name $type and $namespace attributes so that WSDL.prototype.findParameterObject() and WSDL.prototype.findChildParameterObject() could be used without changing the way how all other objects are processed.
This pull request closes https://github.com/vpulim/node-soap/issues/348 without introducing the discussed DeferredCache implementation, as everything what's needed is already read and available in theMessageElement.prototype.postProcess method.

I am having some issues with this fix not working properly for a service I am trying to use. I believe there is a mistake in the code and the reason why the test passes is because message's part has a matching element and name value. For example in the UpdateProfile__correct_nanespaces_in_sequence_with_imports test the soap.wsdl file has the following message:
    <wsdl:message name="UpdateProfileRequest">
        <wsdl:part name="UpdateProfileRequest" element="n:UpdateProfileRequest"/>
    </wsdl:message>

Note that the name and element are UpdateProfileRequest which makes WSDL.prototype.findParameterObject method get the correct parameterTypeObj from schema.elements.UpdateProfileRequest using $lookupType.
Now if for example the the message's part had a different name such as the following example:
    <wsdl:message name="UpdateProfileRequest">
        <wsdl:part name="parameter" element="n:UpdateProfileRequest"/>
    </wsdl:message>

Then the WSDL.prototype.findParameterObject method no longer gets the correct parameterTypeObj using $lookupType since schema.elements.parameter does not exist since it is still named schema.elements.UpdateProfileRequest.
It looks like changing the method MessageElement.prototype.postProcess method that sets $lookupType from:
this.element.$lookupType = part.$name;

to:
this.element.$lookupType = nsName.name;

will make it work correctly in both cases.
Is there something I am missing here or does this sound right and I should do a pull request? Sorry if I was wrong in posting on this thread instead of creating a new one.

Thanks for your time and effort to track this issue down @mmcarolos - it would be awesome if you could provide a PR with your fix (please see our Guidelines on "Submitting a Pull Request") :+1:


Bug in Log Lab Results Multi-Selector

Describe the bug

When more than one test items are selected in 'Log Lab Results' , tags and selection summary doesn't update properly, it's either blank or shows '1 item(s) selected'
User need to click twice to show '1 item(s) selected' except for the first time

https://github.com/user-attachments/assets/bbcf8ff1-26e2-4f96-95a9-c8a0cde6c87d
Expected behavior
Proper update of Tags and selection summary on selection of items from multi selector dropdown

If not being addressed in other issues, I would like to work on this @Jacobjeevan @rithviknishad

@khavinshankar and @yash-learner
this is being re-written right?


How can i set ZLPeoplePickerViewController as Initial ViewController for navigation controller?

i have 5 tabs and navigation bar. i want to add this project to my third tab.
[self.navigationController pushViewController:self.peoplePicker animated:YES];
when i add like that, back button shown on navigation bar.
i mean, i want to like that

how can i do that? and sorry for my english.

i think you should simply declare a navigation controller, initialize the root viewcontroller with ZLPeoplePickerViewController and set the third tab with the navigation controller.
UITabBarController *tbc = [[UITabBarController alloc] init];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:self.peoplePicker];
NSArray *controllers = [NSArray arrayWithObjects: /*first, second*/ nc /*fourth, fifth*/,nil];
tbc.viewControllers = controllers;

too late :) .. i made my own people picker. thanks 👍


Steam: Missing libpipewire-0.3.so.0 library results in fatal failure

Describe the bug

...
Running Steam on nixos 21.05.804.5de44c15758 64-bit
STEAM_RUNTIME has been set by the user to: /steamrt
Error: You are missing the following 32-bit libraries, and Steam may not run:
libpipewire-0.3.so.0
Can't find 'steam-runtime-check-requirements', continuing anyway
...
SteamUpdateUI: An X Error occurred
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  152 (GLX)
Minor opcode of failed request:  3 (X_GLXCreateContext)
Value in failed request:  0x0
Serial number of failed request:  47
xerror_handler: X failed, continuing
[2021-06-08 09:17:04] Shutdown

Full log: https://gist.githubusercontent.com/Kreyren/55870b2c2e3cf0b737cdc4cc8d7e2e62/raw/99075e958eeb3e1c53bf4cfb147d52ea41bdb3f3/gistfile1.txt
To Reproduce

Invoke NIXPKGS_ALLOW_UNFREE=1 nix-shell -p steam
Run steam and expect unwanted failure above

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[kreyren@leonid:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.10.40, NixOS, 21.05.804.5de44c15758 (Okapi)`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.3.12`
 - channels(root): `"nixos-21.05.804.5de44c15758"`
 - channels(kreyren): `""`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Duplicate of https://github.com/NixOS/nixpkgs/issues/124308


Linter fixes

Hi @zwopir , @dominikschulz,
I fixed some trivial linter issues, that I found with gometalinter and codespell.
There is still more issues, but I want to ask you first if you are interested on getting those fixes at all.
BTW, I think you can implement the prometheus/common log and version libraries, as well as kingpin instead of golang's flag.
Another big approach would be using dep instead of govendor.
Just let me know if you are interested in some of them.

Ping @zwopir

Hi @mjtrangoni,
thanks for your PR! I would appreciate it if you fix the other linter issues as well without putting too much priority into it.
Regarding kingpin: I'm fine with the stdlib flag at the moment. Introducing kingpin would change the single dash - arguments to double dash-- arguments. 'm planning a breaking change release (changing the port) after the recent changes are stable and releases as non-RC release.
Regarding logging: I prefer go-kit over the prometheus log package (which is a wrapper around logrus)
I didn't quite get what you mean with prometheus/common/version and kingpin? we are already using the version package from prometheus

Hi @zwopir,
Ok thanks! I am good with this, and I will be fixing more issues later on.
What's about dep? I really like it, but it is up you to switch.
Should we open an issue for moving to kingpin?
If yes, we could move to something like the node_exporter does with version and handlers. See here.

I'm fine with dep. Had some issues on larger projects with it, but you manage to migrate to it, the project will benefit from it as there are probably more dep users out there than govendor.
The kingpin version handler looks good. Creating an issue for it and the kingpin migration is a good idea


Fix withCopyFileToContainer for large files

This was broken in v7.13.0 after the changes in #224.
Archiver.finalize will simply wait for the end event which cannot fire until the stream has been consumed by the following putContainerArchive call.

@dmitri-gb Thanks!


Upgrade OpenRewrite Templating 1.4.3 -> 1.4.4

This PR contains the following updates:

Package
Type
Update
Change

OpenRewrite Templating

patch
1.4.3 -> 1.4.4

OpenRewrite Templating
compile
patch
1.4.3 -> 1.4.4

Release Notes

openrewrite/rewrite-templating (OpenRewrite Templating)
v1.4.4: 1.4.4
Compare Source
What's Changed

Support sources located in an unnamed package by @Stephan202 in https://github.com/openrewrite/rewrite-templating/pull/64

New Contributors

@Stephan202 made their first contribution in https://github.com/openrewrite/rewrite-templating/pull/64

Full Changelog: https://github.com/openrewrite/rewrite-templating/compare/v1.4.0...v1.4.4

[ ] If you want to rebase/retry this PR, check this box

Suggested commit message:
Upgrade OpenRewrite Templating 1.4.3 -> 1.4.4

See:
- https://github.com/openrewrite/rewrite-templating/releases/tag/v1.4.4
- https://github.com/openrewrite/rewrite-templating/compare/v1.4.3...v1.4.4


Resource not accessible by integration

Hi,
I'm trying to use this GH Action in https://github.com/openai/gym/pull/2789. On my fork it seems to works fine: https://github.com/kir0ul/gym/runs/6244334853?check_suite_focus=true, but on the main repo I get Error: HttpError: Resource not accessible by integration: https://github.com/openai/gym/runs/6244334980?check_suite_focus=true.
I tried to modify the permissions as suggested in https://github.com/MishaKav/pytest-coverage-comment/issues/30#issuecomment-962475629, but it didn't work.
Is there any way to work around this error?

Try adding pull-requests: write to your permissions for the GITHUB_TOKEN

Thanks for the suggestion!
So I tried it in https://github.com/openai/gym/pull/2789/commits/ab6159232ee745ae51432e6c1a53695908a1351e but I still get the same error: https://github.com/kir0ul/gym/runs/6708528879?check_suite_focus=true

@kir0ul can you try please this:
issues: write
pull-requests: write

more info

I am also encountering the same error myself; any updates on this @MishaKav ? Thanks a lot for your work on this!

I have tested my actions file with below permissions setting and it works.
jobs:
  pytest:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write

I'm also still seeing this error with the following configuration:
jobs:
  test:
    runs-on: ubuntu-latest
    timeout-minutes: 8
    permissions:
      pull-requests: write
      contents: read
      id-token: write

    steps:
      ......
      - name: Run Unit Tests with Coverage
        run: make test-cov
      - name: Pytest coverage comment
        uses: MishaKav/pytest-coverage-comment@9689962ff78b20865e4ec0b90789e62309498aab
        with:
          pytest-coverage-path: ./pytest-coverage.txt
          junitxml-path: ./pytest.xml

Looks like you do a fork you don't have permission to run the action.
Looks like it GitHub issue as described https://github.com/actions/first-interaction/issues/10#issuecomment-562178406

I'm also still seeing this error with the following configuration:
jobs:
  test:
    runs-on: ubuntu-latest
    timeout-minutes: 8
    permissions:
      pull-requests: write
      contents: read
      id-token: write

    steps:
      ......
      - name: Run Unit Tests with Coverage
        run: make test-cov
      - name: Pytest coverage comment
        uses: MishaKav/pytest-coverage-comment@9689962ff78b20865e4ec0b90789e62309498aab
        with:
          pytest-coverage-path: ./pytest-coverage.txt
          junitxml-path: ./pytest.xml

I was able to fix something similar by changing it from push to pull_request
name: Check changes on branch

on:
  pull_request:

I have the same issue, but weirdly only for PRs created by depandabot? On manually created PRs it works just fine. Does anyone have an idea what could be the cause?

Hi there, I will add to this issue, because it fits thematically.
If a PR is merged to master/main. The "pytest-coverage-comment" action tries to comment on a commit on master/main, right?
In my setup it comments perfectly in the PR and after merge, I get:
Error: HttpError: Resource not accessible by integration
Error: Resource not accessible by integration

It is due to branch protection? Maybe you could add a hint in the documentation about branch protection and the required permissions for the GitHub token please?
Thanks for the great action!

I'm having a similar issue not sure if its related

      - name: Run Tests
        run: pytest --junitxml=unit-testresults.xml --cov-report "xml:coverage.xml" --cov=. .
      - name: Pytest Coverage Comment
        uses<EMAIL_ADDRESS>        with:
          pytest-xml-coverage-path: coverage.xml
          junitxml-path: unit-testresults.xml
          create-new-comment: true

I get these results
Run<EMAIL_ADDRESS>  with:
    pytest-xml-coverage-path: coverage.xml
    junitxml-path: unit-testresults.xml
    create-new-comment: true
    github-token: ***
    pytest-coverage-path: ./pytest-coverage.txt
    title: Coverage Report
    badge-title: Coverage
    hide-badge: false
    hide-report: false
    hide-comment: false
    report-only-changed-files: false
    default-branch: main
    remove-link-from-badge: false
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.9.16/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.9.16/x64/lib
File read successfully "/home/runner/work/datatransfer_eligibility_core/datatransfer_eligibility_core/coverage.xml"
Generating coverage report
File read successfully "/home/runner/work/datatransfer_eligibility_core/datatransfer_eligibility_core/unit-testresults.xml"
File read successfully "/home/runner/work/datatransfer_eligibility_core/datatransfer_eligibility_core/unit-testresults.xml"
errors: 0
failures: 0
skipped: 0
tests: 13
time: 36.1[2](https://github.com/RANDOM_CO/datatransfer_eligibility_core/actions/runs/4288515546/jobs/7470881475#step:9:2)0
File read successfully "/home/runner/work/datatransfer_eligibility_core/datatransfer_eligibility_core/unit-testresults.xml"
coverage.xml
  coverage: [6](https://github.com/RANDOM_CO/datatransfer_eligibility_core/actions/runs/4288515546/jobs/7470881475#step:9:6)[7](https://github.com/RANDOM_CO/datatransfer_eligibility_core/actions/runs/4288515546/jobs/7470881475#step:9:7)%
  color: yellow
Create commit comment

but nothing shows up in the output
Wish I could share more but its a company repo
Seems like it does all the work but no section is created in the output

I encountered this same error while working on a class project for university. I was able to resolve it after reviewing the github organization and repository documentation for configuring the default GITHUB_TOKEN permissions.
Organization documentation link :https://docs.github.com/en/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization
Repository documentation link: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-default-github_token-permissions
Essentially, you need to change the workflow read/write permissions from the defaults on the repository or organization level. I believe that you need to be the owner of the repo/organization to make the change. I have not tried as admin, but I know that you are unable to as a member.
The default settings:

Settings that fix the error:

Thanks this is very helpful

Of course, I'm glad I was able to help! ❤

My understanding of the issue is that PRs from forked repos can never get write access (and really, they never should).
Seems like a better approach would be to use a separate workflow with read-write access that fetches the coverage artifacts from the read-only workflow, which deals with (untrusted) code from the PR.
I have tried the following in the read-only workflow:
            - name: Unit+doc+integration tests with pytest + coverage
              run: |
                  mkdir -p ./testresults
                  pytest --junitxml=testresults/pytest.xml \
                  --cov-report=term-missing:skip-covered \
                  --cov=speechbrain --cov-context=test \
                  --doctest-modules \
                  ./speechbrain ./tests \
                  | tee testresults/pytest-coverage.txt
            - uses: actions/upload-artifact@v2
              with:
                  name: testresults
                  path: testresults/

and in this as the whole read-write workflow:
name: Comment coverage status on the pull request

on: # yamllint disable-line rule:truthy
    workflow_run:
        workflows: ["SpeechBrain toolkit CI"]
        types:
            - completed

jobs:
    covcomment:
        runs-on: ubuntu-latest
        if: >
            github.event.workflow_run.event == 'pull_request'
        steps:
            - name: 'Download artifact'
              uses<EMAIL_ADDRESS>              with:
                  script: |
                      var artifacts = await github.rest.actions.listWorkflowRunArtifacts({
                          owner: context.repo.owner,
                          repo: context.repo.repo,
                          run_id: ${{ github.event.workflow_run.id }},
                      });
                      var matchArtifact = artifacts.data.artifacts.filter((artifact) => {
                          return artifact.name == "testresults"
                      })[0];
                      var download = await github.rest.actions.downloadArtifact({
                          owner: context.repo.owner,
                          repo: context.repo.repo,
                          artifact_id: matchArtifact.id,
                          archive_format: 'zip',
                      });
                      var fs = require('fs');
                      fs.writeFileSync('${{github.workspace}}/testresults.zip', Buffer.from(download.data));
            - run: unzip testresults.zip
            - name: Read the pull_request_number.txt file
              id: pr_id_reader
              uses<EMAIL_ADDRESS>              with:
                  path: ./issue_id.txt
            - name: Pytest coverage comment
              uses: MishaKav/pytest-coverage-comment@main
              with:
                  pytest-coverage-path: ./pytest-coverage.txt
                  junitxml-path: ./pytest.xml
                  hide-report: True
                  issue-number: ${{ steps.pr_id_reader.outputs.content }}

However, this fails to send a comment on the PR because the workflow type is workflow_run, even though I specified issue-number. Wouldn't it work to just allow trying to push the comment if issue-number is specified?
Is there a simpler way I've missed?

Oh! I think I get it! I was having a similar problem even after adding the following code and  following Ryan's suggestion
on:
    push:
      branches:
        - master
    pull_request:

jobs:
  build-test:
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        python-version: ["3.9"]
    permissions:
      issues: write
      pull-requests: write
    steps:
    - name: Checkout
      uses: actions/checkout@v3
<---- Snip ---->

    - name: Pytest coverage comment
      uses: MishaKav/pytest-coverage-comment@main
      with:
        pytest-xml-coverage-path: ./coverage.xml
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

I noticed that it passed on pushing to my feature, but failed on merging to master. So, I added contents: write based on this comment and it then passed on merge.
So basically, I think I will set pytest-coverage-comment to not run on merge with an if condition as I think it is not required at that stage.
Hopefully this is useful for someone! :)

Also may be solved with workflow_run like in this example #153

I have tried adding permission to the job
    permissions:
      checks: write
      id-token: write
      issues: write
      pull-requests: write

everything works fine if the workflow is trigger with a manual dispatch
however, if the workflow is trigger by a branch push, then I get the error
Error: HttpError: Resource not accessible by integration
Error: Resource not accessible by integration

I am very confused by why it behaves different depending on the event that trigger the workflow.

I added the pull-requests: write permissions at the root of my workflow file and also removed the on: push , so only the pull_request trigger remains, that solved it for me.


basePath configuration not prefixing basePath to the static files(assets/scripts)

I want to deploy Catalog in a subdirectory like https://www.mysite/styleguide.
I have set the basePath to '/styleguide' in index.js
<Catalog useBrowserHistory basePath="/styleguide" title="Halo" pages={
    pages
  } />,

But after the build in the index.html the all the paths are showing as /static/build.js rather than /styleguide/static/build.js
How can I prepend the basePath to all the assets?
Catalog Version: 3.6.0

I have the same problem, I would really appreciate solution to this.

I fixed this problem with setting publicUrl="/styleguide"
Catalog.render(
  {
    title: 'My Style Guide',
    publicUrl: '/styleguide',
    pages: [
      // …
    ]
  },
);


DataGrid - Add Ability To Direct Add New Row

Currently the DataGrid can only view and edit rows that are already present in the list. The windows datagrid has an empty line to insert a new row. This would be really useful.

Is this a duplicate of #9922?

@Mrxx99 yeah I think it is. So I'm closing this in favor of the original one


Upgrade to Stanza 1.2.3

I just updated to a more recent version I was able to update to version 1.2.3 and the translation works without problems via the CLI. The latest version of Stanza 1.3.0 throws an error however.
Is there any other check to be made to make sure everything is working fine?

All of the models are packaged with 1.1.1 and I don't see any benefits to upgrading so probably not worth the risk.


Update 0000-01-01-intro.md

No description provided.

I have added second slide page in _posts/0000-01-02-SugahSugah111.md


"Error" field in trustymail output needs a better name

The "Error" field in the trustymail output needs a better name.  It contains mostly? only? things that are not really errors, and is really only useful for debugging why trustymail reached the conclusions it did.

More comments: https://github.com/dhs-ncats/trustymail/pull/25#discussion_r152655565


eslint-plugin-promise

This plugin is part of the eslint-config-standard so would be nice to have implemented.
https://github.com/eslint-community/eslint-plugin-promise

I've been working on this today, already implemeneted valid-params, avoid-new and no-new-statics

Tracking in https://github.com/oxc-project/oxc/issues/4655


Home Page - CTA Bar - Vertical Alignment Issues

CTA Bar on the home page is not properly aligned vertically.
Text Phone number and CTA button should all be center aligned horizontally with equal padding top and bottom.
Link: https://main--shredit--stericycle.aem.live/en-us

I completely refactored the styling of the Simple CTA block and used it on the homepage to replace this section. You can find examples for all of the different styles in PR #449.


Feature request: Allow script dependency inline with file docstring

I am thrilled about uv and have been testing it with custom scripts.
One small ergonomics issue I ran into is the competing placement of a file-level docstring with the inline metadata. I think it could be cleaner to allow ///script elements to exist inside the file-level docstring.
Today I have this:
"""Simple script to download secrets from GCS.

Usage:
    pipx install uv
    uv run scripts/fetch_test_secrets.py
"""
# Inline dependency metadata for `uv`:
# /// script
# requires-python = "==3.10"
# dependencies = [
#     "airbyte",  # PyAirbyte
# ]
# ///

from __future__ import annotations

...

But I would love to be collapse the dependency declarations into the docstring like this:
"""Simple script to download secrets from GCS.

Usage:
    pipx install uv
    uv run scripts/fetch_test_secrets.py

Inline dependency metadata for `uv`:

/// script
requires-python = "==3.10"
dependencies = [
    "airbyte",  # PyAirbyte
]
///
"""

from __future__ import annotations

...

Or using a markdown triple-backtick block like this:
"""Simple script to download secrets from GCS.

Usage:
    pipx install uv
    uv run scripts/fetch_test_secrets.py

Inline dependency metadata for `uv`:

```toml-uv-script
requires-python = "==3.10"
dependencies = [
    "airbyte",  # PyAirbyte
]
```
"""

from __future__ import annotations

...

Thanks for considering! And thanks for all your work on this project!

Thanks!
The use of # /// script is actually codified in a standard (PEP 723), so we don't have control over the structure in that way, since it needs to be interoperable with other tools (e.g., maybe you're using Ruff, and want to put your Ruff configuration for the file in that block).

@charliermarsh - Thanks for your reply. After reviewing PEP 723 more closely (I only glanced at it previously), I see what you mean.
I also found that this iteration is a middle-ground that I find cleaner - and testing confirmed it still works! Feels weird to have comments inside a docstring block, but it doesn't violate the PEP and uv handles is just fine. 😄
"""Simple script to download secrets from GCS.

Usage:
    pipx install uv
    uv run scripts/fetch_test_secrets.py

Inline dependency metadata for `uv`:

# /// script
# requires-python = "==3.10"
# dependencies = [
#     "airbyte",  # PyAirbyte
# ]
# ///

"""

Thanks again for your help - closing as resolved.

Oh, that's true! Thanks for following up.


[sophora-indexing-service] Add keda

Thanks for the PR. I'm not sure if we should add first class support for keda. Another option is to use extraDeploy like the sophora-importer chart does. What do you think?

Sounds reasonable! https://github.com/subshell/helm-charts/pull/18


Close HBaseAdmin at the end of HBaseTest

Can one of the admins verify this patch?

Looks fine, that's a good idea, and this is just an example.

ok to test

Merged build triggered.

Merged build started.

Test build #33453 has started for   PR 6381 at commit e2f0ea1.

Test build #33453 has finished for   PR 6381 at commit e2f0ea1.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/33453/
Test PASSed.


Accept the XCode license

didn't realize this could be done automatically now! (found while setting up 10.12.1)
sudo xcodebuild -license accept

Doesn't work with command line tools:
TASK [homebrew : Accept the XCode license] ***************************************************************
fatal: [iop-imac-32.local]: FAILED! => {
   "changed": true,
   "cmd": ["xcodebuild", "-license", "accept"],
   "delta": "0:00:00.004197",
   "end": "2016-11-10 22:52:47.275593",
   "failed": true,
   "rc": 1,
   "start": "2016-11-10 22:52:47.271396",
   "stderr": "xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance",
   "stdout": "",
   "stdout_lines": [],
   "warnings": []
 }
...ignoring

Doesn't work and might not be necessary anyway; installing the Command Line Tools requires accepting the license.


#98 Error: 3 INVALID_ARGUMENT: Log entry with size 6.23M exceeds maximum size of 256.0K

Environment details

OS: Ubuntu Xenial
Node.js version: v8.11.2
@google-cloud/logging-bunyan version: 0.9.5

Steps to reproduce

Create a big object bigger than 256ko
logger.info(object, message);

It throws an error when it's happening and sometimes stop my node process

@florent1933 can you provide a stack trace from the time of the error?

I don't have more than that.
I create a wrapper around the logger function to only send small objects but it doesn't work. I supposed the library combine logs and send it after.

Hello,
I am also currently affected by this issue using @google-cloud/logging. It's a bit annoying as the StackDriver documentation specify it is possible to batch logs up to 5MB.
It looks like the issue is not coming for @google-cloud/logging but from @grpc/grpc-js that is used under the hood.
Here is an example of the stack trace I'm getting:
message:  "Error: Log entry with size 344.6K exceeds maximum size of 256.0K
    at Http2CallStream.call.on (/srv/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/client.js:101:45)
    at emitOne (events.js:121:20)
    at Http2CallStream.emit (events.js:211:7)
    at process.nextTick (/srv/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9)"
  name:  "Error"
  value:  "{ Error: Log entry with size 344.6K exceeds maximum size of 256.0K
    at Http2CallStream.call.on (/srv/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/client.js:101:45)
    at emitOne (events.js:121:20)
    at Http2CallStream.emit (events.js:211:7)
    at process.nextTick (/srv/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/call-stream.js:71:22)
    at _combinedTickCallback (internal/process/next_tick.js:132:7)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9) code: 3, details: 'Log entry with size 344.6K exceeds maximum size of 256.0K', metadata: Metadata { options: undefined, internalRepr: Map {} }, note: 'Exception occurred in retry method that was not classified as transient' }"

CC: @alexander-fenster this is an odd one :point_up:

This is not coming from grpc-js, but from the logging server. This page says that, regardless of the batch size limit, the size of each entry cannot exceed 256K. This looks like the stackdriver API limitation, not a client library issue.
I'll close this for now, feel free to reopen if you have any questions! Thanks :)

Came across same issue.
Truncate your objects to 256 kb before sending
This is the only way

Truncate your objects to 256 kb before sending

how did you do this? we're sending a JSON, so you can't really truncate it (will invalidate the JSON)

We have had this issue. In the context of GCP Cloud Run, it will actually crash containers and return 503 Service Unavailable methods to subsequent requests to that container until a new container is started up by Cloud Run.
In our case, someone was logging an entire Axios error object and I suppose the GCP logger did not like all the nuances of that. Anyway, hope that helps someone debug the issue further.

Has anyone determined a clear resolution?
Running into this issue as well. It is completely not clear where or which log makes it fail (see stack trace below).
But is there a clear way on how to truncate json logs?
Feb 1 02:11:02 PM  Error: 3 INVALID_ARGUMENT: Log entry with size 2.38M exceeds maximum size of 256.0K
Feb 1 02:11:02 PM      at Object.callErrorFromStatus (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/call.js:31:19)
Feb 1 02:11:02 PM      at Object.onReceiveStatus (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/client.js:195:52)
Feb 1 02:11:02 PM      at Object.onReceiveStatus (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:365:141)
Feb 1 02:11:02 PM      at Object.onReceiveStatus (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:328:181)
Feb 1 02:11:02 PM      at /opt/render/project/src/node_modules/@grpc/grpc-js/build/src/call-stream.js:188:78
Feb 1 02:11:02 PM      at processTicksAndRejections (node:internal/process/task_queues:78:11)
Feb 1 02:11:02 PM  for call at
Feb 1 02:11:02 PM      at ServiceClientImpl.makeUnaryRequest (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/client.js:163:34)
Feb 1 02:11:02 PM      at ServiceClientImpl.<anonymous> (/opt/render/project/src/node_modules/@grpc/grpc-js/build/src/make-client.js:105:19)
Feb 1 02:11:02 PM      at /opt/render/project/src/node_modules/@google-cloud/logging/build/src/v2/logging_service_v2_client.js:247:29
Feb 1 02:11:02 PM      at /opt/render/project/src/node_modules/google-gax/build/src/normalCalls/timeout.js:44:16
Feb 1 02:11:02 PM      at repeat (/opt/render/project/src/node_modules/google-gax/build/src/normalCalls/retries.js:80:25)
Feb 1 02:11:02 PM      at Task._apiCall (/opt/render/project/src/node_modules/google-gax/build/src/normalCalls/retries.js:118:13)
Feb 1 02:11:02 PM      at Task.run (/opt/render/project/src/node_modules/google-gax/build/src/bundlingCalls/task.js:142:35)
Feb 1 02:11:02 PM      at BundleExecutor._runNow (/opt/render/project/src/node_modules/google-gax/build/src/bundlingCalls/bundleExecutor.js:189:14)
Feb 1 02:11:02 PM      at BundleExecutor.schedule (/opt/render/project/src/node_modules/google-gax/build/src/bundlingCalls/bundleExecutor.js:129:18)
Feb 1 02:11:02 PM      at /opt/render/project/src/node_modules/google-gax/build/src/bundlingCalls/bundleApiCaller.js:43:26

@andreisaikouski
I am not sure if it's still relevant, but I was able solve it by not stringifying the JSON and instead passing the JS object as is to the logger. What it did, it truncated the json automatically.
Once it reached the maximum size the logger added a suffix to the logged JSON saying "[message truncated due to size]".
Using<EMAIL_ADDRESS>


chore: test

Signed-off-by: João Vanzuita<EMAIL_ADDRESS>

As discussed, we will wait for the next PR fail, and check what is happening with it as this one worked!


Grouping by columns in a query and paginator gets ALL results.

I have an issue where when I group by a column in a query, and then paginate... it gets all the rows this is getting 19K rows.... how would I stop it doing that and crashing my computer considering the Limit I pass is 10.
https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Builder.php#L245
My generated query from the builder before I do ->paginate(10) is
SELECT DISTINCT *
FROM `mortgages`
INNER JOIN `cases` ON `mortgages`.`case_id` = `cases`.`id`
AND `mortgages`.`status` = ?
GROUP BY `mortgages`.`id`

@jarredholman — following up on your suggestion:

For MySql it can use SQL_CALC_FOUND_ROWS to get the slice and total count at the same time.

Here's what I currently use:
https://gist.github.com/crishoj/fea0a2560ae1efca1e99b24efae83ae2


Pane drag handle should also be unlink button

The current small circle that is the leftmost element of a pane header is a placeholder for a handle by which the pane can be dragged to another location within the explorer window, or to another explorer window in the same taskspace. Also, dragging a pane onto an inspector field should assign that instance variable to the object represented by the pane. (This action, like most others, must be undo-able.) Drag and drop is not yet implemented in Spec2, so none of this works today.
This handle element should take on more functions.
Visually, it should change appearance to indicate whether the pane is a linked pane, or is independent (unlinked).
If the pane is linked, clicking on the handle should unlink the pane from its parent pane and change appearance.
Also the drag functionality described above should work whether or not the pane is linked. Dragging a linked pane to a new location will also unlink it, but dragging to assign in an inspector will not.

The unlinking part of this issue was implemented in #114. The remaining drag/drop functionality is recorded in #115; closing this issue.


The footer must stay at the bottom of a web page when scrolling down

Resolved in #59

We removed the footer for a while


Projects fail to export

I'd leave steps to reproduce, but I'm trying to keep my profile private for the time being.  While I figure that out: I had several projects listed, and I got an empty list.

This is actually by design; there are multiple things (projects and certificates) that I coded into this tool to collect, but opted not to include in the output because (at the time) they were not part of the "official" JSON Resume specification, and my goal was to stay as true to that as possible.
I'm trying to look to see if that has changed and projects is now "official", but tracking the state of the schema is a little... uh... confusing. Looking at my code, I believe at that time I was coding this I was going off this comment, which made it clear v1 was not ready, and v0 was the only official release so far. I believe I split the difference and coded the tool to export v0, but at the same time, included some of the latest schema in my definition files and internals, which at the time was v0.1.3. All this is in my comment block at the top of my TS definition file.
Unfortunately, things are still a bit unclear to me. The schema repo makes it look like v1.0.0 is still under active development, and not stable. The most recent clarifying comment I could find is this one (July 15th), which makes it sound like v0.0.16 (permalink, tag link) is the "official" version. And, getting back to your issue, that version also does not have projects implemented yet. As an added wrinkle, the version hosted at json.schemastore.org/resume is definitely not v0.0.16.

Sorry for the wall of text; a lot of this is just me leaving notes for myself as I work through why I made the decision I did.
I suppose, what I could do (if I have the time at some point to implement it) is give an option to users of my extension when generating an export that lets them pick between the older "stable" version of the schema (this would be the default option), or the newest version (that I have coded support for). Currently, I actually kind of do this, although it is hidden behind a flag you would have to set by opening your browser console and setting it via JS. The ideal version would just be a dropdown in the popup or something like that.

Unfortunately, things are still a bit unclear to me.
Your research has certainly made things clearer to me! I'd be down to help support multiple schema versions.

Had some time to work on this and actually got a lot done this morning - tracked on PR #34.
The remaining work is to integrate the picker into the UI and pass the option as part of the extension message to the script context; shouldn't take long to do, and I should probably have time in the next day or two to finish it up.

Multiple schema support has been shipped 🚀 --> Release v2.0.0


Provide region when using S3

Currently S3 region is hard-coded in the code to ap-northeast-2. In our case we are using Oracle cloud infrastructure S3 compatible API. When this region is selected our uploads fail due to the non-existing region.
This PR introduces ability for an end user to specify in which region S3 bucket resides. When we attached to the container, we tried to override the ENV variable AWS_DEFAULT_REGION to our Oracle's region and the upload was successful.

Tagged as 2.10.1


Memory pattern configurability

From @rgokulsm comment on issue #5 :

I think it might be a useful feature if each loop iteration had some configurability. For example, if the memory addresses could be changed from one iteration to another (say, as some function of the iteration number), this might be useful in stressing the prefetcher. If you think this would be a useful usecase then maybe adding a pass to enable this might be a better option than directly doing so from the wrapper?

There are already various passes that control the memory access pattern, all of them rely on an endless loop behavior so that the requested access pattern can be generated over time. The two main passes are the following (there are others for more specific use cases):

GenericMemoryModelPass: Given the definition of the uarch details (e.g. associativity, sets, cache size, hierarchy, etc...) one can specify that 20% of accesses go to L1, 30% of accesses go to L2 and 50% of accesses go to L3. The pass generates the required addresses to guarantee that behavior (or similar).
GenericMemoryStreamsPass: Given a list of memory access streams (each of them with their size, stride access pattern, and weight) , the pass generates the addresses  according to the streams defined. E.g. 1 stream of length 10K of stride 256bytes, and 2 streams of length 4MB of stride 16bytes, each stream same weight. The code generated will traverse/access tree different memory regions using those strides patterns, and whenever the end of a stream is reached, the access stream starts from the beginning.

Not sure the level of support for these passes for the RISCV-port, but if you let me know which type of patterns you'd like to generate, I can prioritize that effort.

Oh okay, thanks! I have used 'GenericMemoryStreamsPass' with RISCV and it works. I haven't tried this with the looping aspect enabled. I will try that out and update.
Thanks!

Thanks I am able to use the memory stream passed with endless loop enabled. It does seem to me though that in every iteration of the loop the addresses are repeated from the beginning of the stream.
For example:
/* Building block start /
first:FLD f0, 0x0(x2) / Address: Address((char) ST_4096_4_0[16388]+0x0000000000000000) /
/ Loop start /
FADD.S f2, f1, f0
FLD f3, 0x4(x2) / Address: Address((char) ST_4096_4_0[16388]+0x0000000000000004) /
LW x0, 0x8(x2) / Address: Address((char) ST_4096_4_0[16388]+0x0000000000000008) */
In the code above, I think the LW instruction in the loop always loads from the same address. In other words, I don't think there seems to be a 'per-loop-iteration' configurability. This might be the intended objective (i.e. that the iterations of the loop are exactly the same) but I guess having some per-iteration configurability might be useful in creating some streaming usecases. Let me know what you think and/or if I'm missing anything.

@rgokulsm without more information I can not debug/check what is going on.  Can you provide the actual set of passes and parameters that you are using?

Ramon, I just realized I'm using the 'SingleMemoryStreamPass' and not the 'GenericMemoryStreamsPass'. Not sure if that has anything to do with it. My apologies, I will test the latter and get back to you.
The code I'm running at the moment is:
`  cwrapper = get_wrapper('RiscvTestsP')
synth = Synthesizer(
self.target,
cwrapper(endless=True),
value=0b01010101,
)
passes = [
structure.SimpleBuildingBlockPass(self.args.loop_size),
initialization.InitializeRegistersPass(),
initialization.InitializeRegistersPass(v_value=(1.000000000000001, 64)),
instruction.SetInstructionTypeByProfilePass(thisdict),
address.UpdateInstructionAddressesPass(),
memory.SingleMemoryStreamPass(4096, 4),
branch.BranchNextPass(),
register.DefaultRegisterAllocationPass(dd=1),
address.UpdateInstructionAddressesPass()
]
            for p in passes:
                synth.add_pass(p)

            bench = synth.synthesize()

`


Tide new

Description of your changes:
Checklist:

[ ] The title for your pull request (PR) should follow our title convention. Learn more about the pull request title convention used in this repository.

/rerun-all

/rerun-all


Readme + Rscript library

Updates Readme with some more instructions
Fixes Rscripts installing libraries before checking if they are installed

👍


Quick fixes for usability

Opening in place of #104.
A handful few small fixes here that I think improve usability for those times when we're not working with a single project, or just want to run some quick code.
If for whatever reason you think we need to split up this PR just let me know... happy to do so.
User settings

add abl.configuration.defaultRuntime.  The previous default on the array will still work by taking the first one it finds.  This cleans up the config a bit by making it more clear that we should only have 1 default.

Could quite get abl.configuration.runtimes.default to work.  Didn't play nice with the array existing under the same naming convention.

openedge-project.json .config

Don't require that "dbconnections": [] be defined in openedge-project.json

Fixes this runtime error:

When no source or propath entries are provided in openedge-project.json default the propath to '.'
If no "oeversion" key is given, use the default from user settings if configured.

launch.json config

When creating a debug configuration the port field is set to "string" when it should really be an integer as it fails the schema validation.

Terminal related fixes

Create the .builder/ directory on the first run of a task/command if needed to fix this error:

When using the "ABL: Run with _progres" command change the dirsep character to / so it plays nicely with Git Bash.  Seems that using the forward slash is compatible with everything, but the back slash is not so friendly.  Tested with Git Bash, cmd, PowerShell.  No change needed on the other commands.

@gquerret  I'm sure this is on your radar, but when openedge-project.json doesn't have oeversion we get this error from the language server.
[2023-10-12T12:51:43.408-0400] [ERROR] Unable to open project
java.io.IOException: oeversion attribute missing in openedge-project.json
	at eu.rssw.openedge.ls.builder.o.<init>(SourceFile:247)
	at eu.rssw.openedge.ls.builder.o.<init>(SourceFile:202)
	at eu.rssw.openedge.ls.proparse.r.a(SourceFile:349)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at eu.rssw.openedge.ls.proparse.r.a(SourceFile:344)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleResponse(RemoteEndpoint.java:212)
	at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:193)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194)
	at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94)
	at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)

I'm sure this is on your radar, but when openedge-project.json doesn't have oeversion we get this error from the language server.

Yes, I've already changed that in the LS. I'll have to modify one more thing to match the new default runtime.

Flagged as draft PR, do you want to add commits ?


fqdn: fix zombie over-limit reaping

The purpose of DNS zombie tracking is to avoid deleting mappings which are still in use by long-running connections. To do so, it employs the help of the conntrack (CT) subsystem, to tell it which IPs are still the target of existing connections. CT does this periodically, updating the zombie's AliveAt field. The period of CT GC is variable at runtime, but can easily be on the order of minutes or hours, since it is relatively expensive.
As a circuit-breaker, the DNSZombieMapping is configured to limit the number of IPs per single FQDN. When this limit is exceeded, some zombies must be deleted. A heuristic is in place to choose the victim zombies: delete those which have not been marked alive the longest.
The bug we fix here is that the AliveAt field was not initialized when a mapping became a zombie. Since the zero value of time.Time sorts before any real moment in time, these new zombies were considered "older" than any other which had the field set by CT GC. New zombies hence had a chance of being killed as part of FQDN GC when enough zombies existed for a specific FQDN.
To make a concrete example: many applications use S3, and allow this traffic via toFQDN policy. S3 DNS records have a TTL of five seconds and contain 8 IPs. The IPs are selected from a very large set and hence the number of IPs quickly exceeds the per-fqdn IP limit. Each of those IPs first becomes an entry in the Endpoint DNS cache and, once past TTL, migrates to become a DNSZombie (with a zero valued AliveAt field).
Now, for a few (un)lucky zombies, CT GC will mark them alive (i.e. set AliveAt) before FQDN GC runs. Since we are a) over the limit of IPs per hostname, and b) a steady stream of zombies come in, the incoming zombies were considered "older" than the ones marked by CT GC. Therefore, when zombies were selected to be removed, cilium chose the newly added zombies, even though older ones would have been available.
A complicating factor we've so far glossed over is that this only occurs if the FQDN is being kept alive. That is, as long as there's any IP that's alive which is pointed to by the FQDN, that FQDN is kept alive, as are all other IPs pointed to by that name. (See the added test for an example.)
Another complicating factor is that this bug was previously masked by other issues, such as https://github.com/cilium/cilium/pull/31205 and https://github.com/cilium/cilium/pull/27572. With these fixes being in the tree, this issue became more prevalent - a beautiful example of how making things better can actually make it worse :sweat_smile:
Related: #28427
Cilium no longer keeps old DNS-IP mappings alive while reaping newer ones, leading to spurious drops in connections to domains with many IPs associated.

/test

/fqdn-perf

LGTM, some comments below for discussion if that's interesting.

Always! Glad you took a look, we found a bug in our change based on your comments :upside_down_face:

I briefly thought about whether we could encode this behaviour in the sort function rather than changing the meaning of the AliveAt field, but I expect that idea would be unwieldy.

Yeah, this came to mind for us too. My naive idea was to treat the zero value as "end of the universe" (i.e. max time) and hence to move zombies with an uninitialized AliveAt to the back instead. Fischi pointed out that this is not ideal either, since the AliveAt field has no guarantee to be touched after initialization - CT GC only touches the zombies of active connections. A zombie with zero AliveAt could stay around for as long as some other zombie for the same name is alive. In a sense, we'd treat AliveAt as max in sortZombieMappings and as zero in isZombieAlive, which is somewhat confusing.

The core fix here makes sense to me.

The problem with the previous iteration was the following: setting AliveAt to expire time is too far in the future for mappings with long TTLs which were "expired" due to being over limit. For connections which are active, this future value is overwritten with the GC time, whereas connections which were short-lived are not touched. We'd then, suboptimally, select the long-standing, actually alive connections to be deleted before the ones which are actually dead.
We fixed this by setting the AliveAt to the lastCTGCTime, that is, we pretend we saw it during the last GC.

/test

zombie with still high TTL

So, going through the history, it seems the fix relies heavily on the accurate and timely operation of the connection tracking garbage collection process. Any delays or inefficiencies in GC could still impact the effectiveness of the solution.
Could there still be edge cases where the behavior of the AliveAt field could lead to unexpected results? For instance, in scenarios with high traffic or sudden bursts, could GC delays affect the AliveAt updates?
I guess we need continuous monitoring to validate the fix. Do we have sufficient logging and alerts for CT GC performance metrics to help ensure timely updates?
Looking forward to your thoughts!

So, going through the history, it seems the fix relies heavily on the accurate and timely operation of the connection tracking garbage collection process. Any delays or inefficiencies in GC could still impact the effectiveness of the solution.

It's not so much the fix that relies on this, but the whole DNSZombie subsystem that relies on CT GC. This PR is merely fixing a bug in the implementation of the existing system without changing the overall design (which would likely not be an easy backport). I'm certainly happy to discuss a redesign of the system, but it's a pretty intricate problem space and the current implementation has the benefit of years of hindsight in the form of bugfixes.

Could there still be edge cases where the behavior of the AliveAt field could lead to unexpected results? For instance, in scenarios with high traffic or sudden bursts, could GC delays affect the AliveAt updates?

Yes, without GC there are no updates to AliveAt, without updates to the GC revision no zombies are evicted due to no longer being alive. The circuit breaker of limiting the total number of zombies and the number of zombies per hostname will prevent the system from collapsing, though.
Still, if the automatic conntrack GC interval calculation is in effect (i.e. if there's no max/min ctgc interval configured via flags) and the interval calculation deems the right interval to be very large (say, 24h), zombie mappings stick around for a long time, which may be unexpected/unwanted. High churn is common for S3 and similar endpoints, c.f. https://github.com/cilium/cilium/issues/28427 - cilium's behaviour for these has steadily improved, specifically so with 1.16.

I guess we need continuous monitoring to validate the fix. Do we have sufficient logging and alerts for CT GC performance metrics to help ensure timely updates?

CT GC logs when it happens and what the next interval is. Timely updates are difficult to define but in this specific bug there was no issue with when/how often the CT GC ran. It is also a trade-off: CT GC is somewhat expensive, IIRC. The test we've written validates that the behaviour of the code before this PR was faulty in the specific situation we've identified, the fix makes the test pass.

It would be awesome to have a brainstorm around more timely synchronization of liveness state for connections from the datapath to improve on the current design. Low hanging fruit right now is just migrating the BPF CT dumping over to batched operations rather than syscall-per-entry (which I understand is making progress, but not there yet). This could at least reduce the cost and allow us to more frequently synchronize that state. There may be additional options.

I agree. I am sure we can do better in state synchronization


DOC403 behaviour with yielding none

List of keywords you searched for before creating this issue. Write them down here so that others can find this issue more easily and help provide feedback.
"DOC403 ", "numpydoc", "yields"
A minimal code snippet that reproduces the bug.

@pytest.fixture
def db_setup() -> Generator[None, None, None]:
    """
    Add test user.

    Yields
    ------
        And then cleans up test user.
    """
    database = Database('my_database_url')
    with database.create_session() as session:
        session.execute(insert(database.Users, [{'id': 1, 'name': 'Bob'}

    yield

    with database.create_session() as session:
        session.execute(delete(database.Users).where(database.Users.id == 1234)

The command you invoked (e.g., ruff /path/to/file.py --fix), ideally including the --isolated flag.
ruff /path/to/file.py --fix
The current Ruff settings (any relevant sections from your pyproject.toml).

[tool.ruff]
line-length = 120
preview = true
target-version = 'py312'

[tool.ruff.format]
line-ending = 'lf'
quote-style = 'single'

[tool.ruff.lint]
extend-select = ['D213']
ignore = ['ANN401', 'CPY001', 'D107', 'D203', 'D212', 'E203', 'ISC003', 'PLC1901', 'PLR6104']
select = ['ALL']

[tool.ruff.lint.flake8-implicit-str-concat]
allow-multiline = false

[tool.ruff.lint.flake8-quotes]
inline-quotes = 'single'

[tool.ruff.lint.flake8-type-checking]
strict = true

[tool.ruff.lint.pydocstyle]
convention = 'numpy'

[tool.ruff.lint.pylint]
max-args = 14
max-statements = 75

The current Ruff version (ruff --version).
ruff 0.6.1

The above code snippet results in a DOC403 Docstring has a "Yields" section but the function doesn't yield anything.
If the yields section is removed from the docstring then numpydoc-validation reports:
+---------------------+-------------------+---------+-------------------------+
| file                | item              | check   | description             |
+=====================+===================+=========+=========================+
| src/conftest.py:135 | conftest.db_setup | YD01    | No Yields section found |
+---------------------+-------------------+---------+-------------------------+

I understand that it is debatable about what the docstring should be a for a yield statement that yields None, but I think ruff should probably match the numpydoc-validator tool in this case.

This seems like a bug. An empty yield isn't considered to be present in the body:
https://github.com/astral-sh/ruff/blob/4d0d3b00cb99e0abb934877dddec1ffcbc488818/crates/ruff_linter/src/rules/pydoclint/rules/check_docstring.rs#L638-L644
@augustelalande just checking in to see if there's a specific reason behind this otherwise we can remove the Some(_) condition from above.

I did this on purpose because IMO the yields section should document the yielded value not, the function behavior associated with the yield. Similar to return None, not needing documentation.
The yield "behaviour" could be documented in the docstring summary.
But if people feel strongly the other way, feel free to change the behaviour.

@augustelalande to be fair I do agree with your logic. I only raised this due to conflicting behaviour with numpydoc's validation tool.
Maybe I will raise an issue with numpydoc and see what they say about it.

I did this on purpose because IMO the yields section should document the yielded value not, the function behaviour associated with the yield. Similar to return None, not needing documentation.

Yeah, that makes sense.

Maybe I will raise an issue with numpydoc and see what they say about it.

@jonyscathe That might be useful, thanks

The numpydoc people do believe that the yield should be documented even if it is none, as it is not really the same thing as returning none (the yield is still doing something).
https://github.com/numpy/numpydoc/issues/580
They also have the example that something like:
def yielder():
    for _ in range(10):
        yield

is inherently different to:
def yielder():
    yield

And should be documented as such in the Yields section (10 implicit None's via a generator vs 1).

... and just to bring the discussion over here to save some a click, I suggested:

It seems reasonable that [these two examples] would both need some Yields section of some sort to tell people about the nature of the returned generator.

It seems natural to put this in a Yields section. But I am not 100% convinced either way. cc @stefanv who was also discussing over in numpydoc.

@jonyscathe @larsoner Thanks for confirming! I think it makes sense to update the behavior. All we need is to remove the Some(_) match as mentioned in https://github.com/astral-sh/ruff/issues/13001#issuecomment-2297862398.

Is the suggestion to report docstring-missing-yields (DOC402) on
@pytest.fixture
def db_setup() -> Generator[None, None, None]:
    """
    Add test user.

    """
    database = Database('my_database_url')
    with database.create_session() as session:
        session.execute(insert(database.Users, [{'id': 1, 'name': 'Bob'}

    yield

    with database.create_session() as session:
        session.execute(delete(database.Users).where(database.Users.id == 1234)

as well?
If it is unclear whether implicit yield None requires a yields section in the docstring, it makes sense to not report a DOC403 upon its absence. However, it might also make sense to not report DOC402 if an implicit yield None is present without an accompanying docstring section — i.e., to permit the above code example. In many situations, an implicit yield None is trivial and only occurs once, and thus a yields section would only exist to document that the object is a generator (already achieved via a typing.Generator annotation).
If we want both DOC403 and DOC402 make exceptions for implicit yields (that is to say, count them in one and ignore in them in the other), then it is more than a one-line code change.


Add codecov support

Let's see if this works.

Appears to Just Work (TM)

Codecov Report

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

@@           Coverage Diff            @@
##             master     #93   +/-   ##
========================================
  Coverage          ?   47.1%
========================================
  Files             ?      45
  Lines             ?    2225
  Branches          ?       0
========================================
  Hits              ?    1048
  Misses            ?    1177
  Partials          ?       0

Continue to review full report at Codecov.

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


Regarding DynamoDB SDK's default timeout

Hi, dear AWS SDK dev team,
So we've noticed that the SDK for DynamoDB actually has the default timeout for HttpClient as 100 seconds. This will cause significant latency occasionally because SDK will only retry after more than 1 minute.
If you read the documentation: https://aws.amazon.com/premiumsupport/knowledge-center/dynamodb-high-latency/
The first strategy mentioned is:
Reduce the request timeout settings: Tune the client SDK parameters requestTimeOut and clientExecutionTimeout to timeout and fail much faster (for example, after 50 milliseconds). This causes the client to abandon high latency requests after the specified time period and then send a second request that usually completes much faster than the first. For more information about timeout settings, see Tuning AWS Java SDK HTTP request settings for latency-aware Amazon DynamoDB applications.
Now, this makes me wonder that given this is the recommended practice to reduce latency, why not SDK adopt it by default? Right now, our team has to force DynamoDB SDK to adopt 100ms timeout and we have to be careful if any new service starts using SDK, it needs to configure the SDK with the correct timeout, which is a hassle.
Please correct me if I'm wrong in any of observations above and please guide me to the right path if you think what our team is doing is incorrect.
Thanks heaps!

Hi @rui-ktei,
Good afternoon.
Thanks for posting guidance question. The AWS SDK for .NET does not constrain the timeout value by default if not explicitly by user, and instead uses the default value of 100 seconds as specified by .NET HttpClient.Timeout. You may try using the DynamoDBClientConfig's Timeout value to suit your needs as mentioned by the https://aws.amazon.com/premiumsupport/knowledge-center/dynamodb-high-latency/. The DynamoDB request (or any other service's request) flows throw the internal Http request pipeline and different services have different baselined values to improve latency. Hence, SDK doesn't constrain the default value and leaves up to user to fine tune these values as per need.
Thanks,
Ashish

Hi, @ashishdhingra
Thank you for the reply.
I do understand that the SDK does not constraint the default HttpClient timeout value and it's up to the user to fine tune it.
However, as SDK, in my opinion, it should provide some meaningful default value with best practice, so for most users they can just use SDK with minimum configuration and they also don't need to further fine tune it until they encounter more complex issues. It's like buying an apartment with furniture and live in without worrying about tweaking light switches.
For DyanmoDB SDK, if you read the official documentation https://aws.amazon.com/premiumsupport/knowledge-center/dynamodb-high-latency/, it suggests reducing the timeout to a relatively small value, so that DynamoDB can retry fast, which I believe can solve the most of occasional network timeout issues.
I'm not saying this is a bug of SDK. All I'm saying is from a user's perspective and I suggest that the SDK authors should consider revisiting this default value.
Thank you.


migrate to swift 3

The most recent master has been upgraded to Swift 3 (finally), and makes some API changes as well. Take a look 😄


fix(cmd): Standardizes all output to use lower snake_case names

After discussing similar changes in #6866, we decided to make sure all
JSON and YAML output uses lower snake case names as is generally standard practice

@thomastaylor312 Ahm, Am I reading this correct that with the change all releases that are created before will be invalid and can't be read? Breaking all exiting helm3 releases?

Yes.

That is quite disappointing. We are already using helm3 semi productively . I don't understand how such a change can be justified in a late rc phase of a release.

I take full responsibility for the change. Apologies for introducing a breaking change so late into the release cycle. This was caught at the last minute and had to go in before 3.0 was released. We  weren't anticipating any breaking changes to the backend, but here we are.
The main issue had to do with marshaling and unmarshaling releases from Kubernetes. Some fields were capitalized, some were not. This inconsistency would be difficult for other users wishing to re-implement the storage backend in parallel projects. Go projects can use the SDK, but clients written in other languages would have to rely on the spec. Once we went 3.0, there would be no going back, and we'd have to live with this inconsistency, so we had to make the change now or never.
Again, we're sorry for not catching this sooner in the release cycle. It's disappointing but necessary to make it easier for third party clients in the future.

FYI #6866 is the change that introduced the breaking change on the storage backend. This PR only changes the output of the -o json for certain commands.

@bacongobbler Thanks for the response. I looked into #6866 and after my initial shock I might think the change is not really backward incompatible:
According to the https://golang.org/pkg/encoding/json/#Unmarshal documentation it says:

To unmarshal JSON into a struct, Unmarshal matches incoming object keys to the keys used by Marshal (either the struct field name or its tag), preferring an exact match but also accepting a case-insensitive match.

This means it should still be possible to deserialise old releases because no snake casing with introduced, only lowercasing the first letter.
This playground example show that it should indeed accept the literal field name even with a lower case son tag: https://play.golang.org/p/KlfhKHfAqMw

Oh! That's super convenient. I wonder if serializing/de-serializing fields in JSON should be considered case-insensitive.
Phew!


Typo in a URL

Describe the bug
A clear and concise description of what the bug is.
Wrong URL at https://docs.microsoft.com/en-us/rest/api/azure/devops/notification/subscriptions/create?view=azure-devops-rest-6.0#create-a-personal-subscription.
See: POST https:/.dev.azure.com/fabrikam/_apis/notification/subscriptions?api-version=6.0
Should be: https://{service}.dev.azure.com/fabrikam/_apis/notification/subscriptions?api-version=6.0
To Reproduce
Steps to reproduce the behavior:

Go to https://docs.microsoft.com/en-us/rest/api/azure/devops/notification/subscriptions/create?view=azure-devops-rest-6.0#create-a-personal-subscription

@wnjenkin is there a place to track this Rest API doc fix request for Azure DevOps?

@wnjenkin is there a place to track this Rest API doc fix request for Azure DevOps?

@GSYankov Please move this issue to https://github.com/MicrosoftDocs/azure-devops-docs/issues

@keziamicro can you transfer this issue as requested? I don't have access.