⚠ PrivateHD has degraded performance

In 5422ff8, PrivateHD ($PHD) experienced degraded performance:

HTTP code: 200
Response time: 2883 ms

Resolved: PrivateHD performance has improved in 2304a83.


Numbered lists when each number has more than 1 line of content?

Hi,
I am trying to create an enumerated list using DocumenterVitepress, but it's rendering not quite what I would want/expect. For example, if I do
1. qwe
2. abc
3. zxc
4. ert

it renders what it's supposed to render, i.e. a list of numbers 1-4 with the three letters. However, if I want to do something like
1. qwe
``1+1``
2. abc
3. zxc
4. ert

it renders (spaces between number and dot are there to prevent the github markdown kicking in which actually does what I'd want it to)
1 . qwe
$1+1$
1 .  abc
2 . zxc
3 . ert
The problem is that instead of ``1+1`` I want to add ::: details containers for each item in the enumerated list, so it can't be in the same line. Am I missing something obvious on how to do it?

What happens if you indent the content you want to place in the link?  MarkdownAST should then pick it up as being part of the list element, not totally new text.

If I do
4. abcd
    $1+1$
    ```somecode```
    5. qwer
    6. zxcv
    9. hgdd

I get

abcd $1+1$ somecode
qwer
zxcv
hgdd

so they are all in the same list, but numbering still starts off not how it does in Markdown. Moreover, the indentation solution falls apart when I want to add
::: details

This is a details block.

:::

to be between 1. and 2., so something like
4. abcd

    ::: details
    This is a details block.
    :::

    5. qwer
    6. zxcv
    9. hgdd

(spaces above/below the details block I think are necessary otherwise the detail block doesn't work properly) then it does strange things that are not what I want. I think the main problem is that the initial number 4. is ignored and turned into 1. If setting of the initial number worked as it does in plain Markdown then this would be easy.

One workaround is simply to use raw HTML as follows:

qwe

which starts an ordered list with number 4.

Vitepress accepts HTML in Markdown, so this would be a good way to do it.


Issue with manual entry on Windows 7.4.31

When selecting a project for a manual entry the program stops and also the start- and endtime are specified without calculating the duration.
Windows version 7.4.31
Case 478278

Similar as well to issue reported in case 479002

For the last +-2 weeks I have been having a lot of issues with toggl desktop application. Seems they made an API change that really messed things up for us. We are now considering an alternative as it sometimes takes up to 5 tries to change fields in the desktop application.

@Kevin-Deason Please try changing the app version to the latest stable or download from this link: https://github.com/toggl/toggldesktop/releases/download/v7.4.47/TogglDesktopInstaller-7.4.47.exe
This should resolve the issue.

outdated issue, seems to be fixed a while ago


[Docs] Add more examples to displayName and identifier docs

Our previous examples lead people to think they need to include 'Host' or similar in these strings. This attempts to make it clearer that it's supposed to just be the common name for host/manager in question.
Closes #829

@elliotcmorris added you RDNS note here too https://github.com/OpenAssetIO/OpenAssetIO/pull/842/commits/0d5c037fed0f04e6193baa1564e106fbb499097c


Snap components to grid

Is there currently a function to move components and snap them to a grid automatically? It's easy enough to do that I wonder if there's a reason it's not already implemented. If others agree it's a useful addition, would it be better to have it as a standalone function like below or a flag in the component.move() method?
import gdsfactory as gf

def move_on_grid(
        component_ref: gf.types.ComponentReference,
        destination: tuple[float, float],
        grid_nm: int = 2,
        origin: tuple[float, float] = (0, 0),
        ) -> gf.types.ComponentReference:

    from gdsfactory.snap import snap_to_grid, is_on_grid

    if (not is_on_grid(origin[0], grid_nm)) or (not is_on_grid(origin[1], grid_nm)):
        raise ValueError(f'Origin needs to be on grid {grid_nm}nm!')

    x_dest = snap_to_grid(destination[0], nm=grid_nm)
    y_dest = snap_to_grid(destination[1], nm=grid_nm)

    component_ref.move(origin=origin, destination=(x_dest, y_dest))
    return component_ref

On a similar note, it might be useful to add a grid_size property to the PDK BaseModel and have cross sections and movement auto-snap to this value if it is defined.

Hi Thomas,
we have functions for making sure ports endpoints are on grid and I added an issue of ports not being on grid and on manhattan orientation
https://github.com/gdsfactory/gdsfactory/issues/476
let me know if that's good
https://github.com/gdsfactory/gdsfactory/compare/51016c?expand=1
It also includes the Pdk.grid_size = 0.001 (1nm by default)
For the move_on_grid function it looks good to me, when would it be useful?

Hi Joaquin,
Thanks for adding that in, I think it's a nice addition! I just set up a PR for some minor changes to the snapping functions (#478) so hopefully that works for you as well.
The issue I am having is that the snapping only really happens when we extrude cross sections, so
gf.components.straight(length=10.0005)

will generate a warning (as of #478) because the port 'o2' is off-grid, but
s1.move((1.0005, 1.0005))

will not generate a warning, though the components are not properly placed on the grid.
Since the minimum grid size is typically a global parameter, I think it would be helpful to, by default, snap components to a global grid when moving components as well as when extruding them. It would also ensure that floating point rounding errors don't creep into components without at least raising a warning. Essentially making this test pass:
import gdsfactory as gf
from gdsfactory.snap import is_on_grid

c = gf.Component()
s1 = c << gf.components.straight(length=10)
s2 = c << gf.components.straight(length=10)

s1.move((1.0005, 1.0005))
s2.connect(port='o1', destination=s1.ports['o2'])

c.show(show_ports=True)

assert is_on_grid(x=s2.ports['o1'].midpoint[0], nm=pdk.grid_size)
assert is_on_grid(x=s2.ports['o1'].midpoint[1], nm=pdk.grid_size)


Check characters rather than key codes to limit input in name field

Hi! thanks for this beautiful card form. Everything is ok but i can't enter Turkish character into card holder name input (e.g. "ü,ş,i,ğ...") How can i fix this problem???
Thank you!

That character restriction on the name input will be removed in v1.0.0 so I'm closing this!


Tenant schema as subdomain

I checked out the widget_saas project for sample of using apartmentex. Is there a way to have the tenant schema as the subdomain? Something like this: https://django-tenant-schemas.readthedocs.io/en/latest/ i.e. http://first-tenant.example.com instead of http://example.com/tenant/:first_tenant_id.

I think this is irrelevant. In both cases (subdomain vs url path) you'd need to write some plug that checks either subdomain or url path to get the  tenant name on each request.

@shulhi this is all I did:
defmodule App.TenantController do
  plug :set_current_store

  defp set_current_store(conn, _params) do
    {"host", host} = List.keyfind(conn.req_headers, "host", 0)
    store = Store.get_by_host!(host)
    assign(conn, :current_store, store)
  end
end

defmodule App.Tenant do
  def get_by_host!(host) do
    subdomain = host
      |> String.split(".")
      |> Enum.take(1)
      |> Enum.join(".")

    Repo.get_by!(__MODULE__, subdomain: subdomain)
  end
end

To add to the advice above, the tenant qualification can really come from anywhere- subdomain, path, jwt claim, some other header, etc.  basically anything you can access in plug on a request can be used to target a schema

Thanks, I got it working with plug.


Email notifications for create,update,delete deployment

-Feature: Enable Email notifications to Trusted and Owner Users / Groups for RAD Lab module updates
-Steps to Test :

Login as RAD Lab admin.
Navigate to Set up page.
Update required fields and move to step 4 to enable email notifications and update mail box email and password.
Create a new RAD Lab deployment/ update with Trusted and Owner Users/Groups email ids and also  email will trigger to deployer of the module by default.(Email will trigger for create/update/delete modules)

Release for #141


completed task  water sort puzzle game

Title and Issue number

Close #<issue_no>

Checklist:

[] I have mentioned the issue number in my Pull Request.
[] I have commented my code, particularly in hard-to-understand areas
[] I have created a helpful and easy to understand README.md

Where i will check
On Mon, 29 May 2023, 19:48 welcome[bot], @.***> wrote:

Thanks for opening this pull request! Please check out our contributing
guidelines.
—
Reply to this email directly, view it on GitHub
https://github.com/pranjay-poddar/Dev-Geeks/pull/1572#issuecomment-1567201071,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHSLX7YRIVQI6KBNMI5ZJDXISV4HANCNFSM6AAAAAAYS3JJMM
.
You are receiving this because you authored the thread.Message ID:
@.***>

Follow and fill up the PR template and mention the issue number

Ok i will
On Mon, 12 Jun 2023, 08:47 Pranjay Poddar, @.***> wrote:

@.**** requested changes on this pull request.
.
—
Reply to this email directly, view it on GitHub
https://github.com/pranjay-poddar/Dev-Geeks/pull/1572#pullrequestreview-1473978271,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHSLX7JMWHDJTFYVVB63ATXK2C4JANCNFSM6AAAAAAYS3JJMM
.
You are receiving this because you authored the thread.Message ID:
@.***>


Fixed #20

Hey @drphilmarshall check out my bug fix! You're welcome.

Ah - this just got fixed already in #28. Thanks though!


Provide a simple onboarding flow for users to backend services

User Story

As a platform owner I want to reduce the maintenance burden of onboarding new users
As an end user of platform components I want an easy way of getting access to our various services

Description/Context

Since we are investing in Keycloak as our supported SSO solution it would be useful to use that as the means of granting access to users of our various platform components. Examples of services that would benefit from enabling SSO include:

Trino
Superset
OpenMetadata (not yet implemented)

The main groupings of people who we want to be able to support are engineers internal to our team, or MIT employees who are non-engineers. To address that cross-section of users the most likely approach would be to combine Touchstone/SAML for authentication with LDAP for authorization.
Acceptance Criteria

[ ] Touchstone SAML is enabled on the Keycloak realm used to authenticate to the different platform components
[ ] Keycloak is configured to be able to communicate with the MIT LDAP server
[ ] A meaningful set of Moira groups are configured that we can map to appropriate roles in the target platforms

Plan/Design

My ideal case is that we can combine the Touchstone AuthN with LDAP for AuthZ, such that when a user logs into a given service it maps them to an appropriate role based on their LDAP group membership. For example, if someone logs into Starburst Galaxy then we can grant the user to the marketing role because they belong to the ol-data-marketing moira group.

Read through some kb articles on options for using ldap or kerberos for authorization in Keycloak and then had a conversation with IST. Their idea is that Touchstone can also be used as part of authorization along with leveraging existing Moira groups. They would need to release memberOf attribute and we'd have to handle some mapping on the Keycloak end and based on that allow or disallow access. This will need quite a bit of testing and some Keycloak config, but it's worth trying out as it'll be simpler than adding ldap or some other additional provider for authn.

Submitted request to IST with relevant details to test on the ol-engineering realm in CI. The memberOf attribute released will filter on groups starting with ol-* in Moira.

To exchange group and user information with Starburst, we need to install and configure a SCIM plugin for Keycloak. A SCIM plugin exists (free and enterprise license available) and will work on installing and testing it out. One downside so far is that the download is manual and so is obtaining a free or paid license.

The previous plugin is a SCIM server which is the reverse of what we need. They are currently working on a client, but is not available as of now. We came across a SCIM client , however it fails on build:
ERROR: Failed to run 'build' command.
ERROR: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
	[error]: Build step org.keycloak.quarkus.deployment.KeycloakProcessor#configureKeycloakSessionFactory threw an exception: java.util.ServiceConfigurationError: org.keycloak.storage.UserStorageProviderFactory: Provider sh.libre.scim.storage.ScimStorageProviderFactory could not be instantiated

Checked the repo to see if anyone reported the same or similar problem, but the project is a year old and not sure how well maintained it is. I did come across an issue on the Keycloak repo about integrating a SCIM client into upstream and there seems to be some interest, however it hasn't happened yet.

Ended up forking the repo and merging a PR that updated the dependencies and replaced some functionality with the other scim library.
Used Gradle to create a new JAR file and ran the keycloak build command with the new JAR and it ran through showing that the new provider was loaded. Didn't check the UI, but technically should be working now. Updated Keycloak pipeline to include this new plugin and will test functionality on CI.

Any update on SCIM implementation or roadmap?


Fix build with musl libc

CCEQ is not available under musl libc.

Thanks for the PR. I'd rather just inline the macro then, please try out
#250 and let me know if it works.
I'm trying to build with musl on Travis but ran into some issues. How
are you compiling pick with musl? Is anything more than the commands
below necessary? Travis uses Ubuntu and I did install the musl-tools
package.
$ env CC=musl-gcc ./configure
$ make

#250 is fine too. I'm building on a Void Linux system with musl as the system libc. No other changes necessary here.

Great, merged.
Are you packaging pick for Void Linux? If true, consider submitting a PR
with install instructions added to the README.


Documentation is lacking output details

All az cosmosdb sql command documentation is lacking detailed information about the output.

cosmosdb

Hi @jorgensigvardsson Thanks for creating the issue. Can you please be more elaborate on what sort of detailing you are looking for here ? We have our docs in here https://docs.microsoft.com/en-us/cli/azure/cosmosdb/sql?view=azure-cli-latest
The same would be shown for each command on using the "help" parameter.

All commands seem to return a response in a structured format. I would like to use the response to figure out what happened. In order to do that, some kind of schema for the output would be nice.

These are our REST API docs https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/
The responses would adhere to what is described here. Can you please have a look and let me know is this what you are expecting. The response would look exactly like what is described in there. Make sure to look for 2020-04-01 apiVersion https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/2020-04-01/databaseaccounts.
Let me know if just the above docs are helpful or if you would want this information to be incorporated in some specific place elsewhere.

Ok, so the az command is tightly coupled to the REST API and a specific version. Would it be possible to reference that, either in the documentation, or using the az command itself? Or am I asking for something that az cli wasn't supposed to do?
I could do integrations against the REST API myself, but that is much more cumbersome from a scripting perspective than running az. As it stands now, the response of the az command kind of lands between a user tool (command line driven) and an API (responds with structured data adhering to an API).

Makes sense. I understand your ASK better now.
We will take this up in a future release of CLI.

I'm confused as to what you are asking for.
If you want to learn what the schema is, just run the command. Am I missing something else here?


Export info box component

@langdal Sigh. Export InfoBox component... again. Missed an index file the first time.


Added ingress class to spec

Please provide enough information so that others can review your pull request:

As already suggest in #128 adding a IngressClass to work with multiple ingress controller.

Explain the details for making this change. What existing problem does the pull request solve?

Makes working with multiple ingress controller easier.

please add entry to README in the values table


[EDA]: Update Course Connection's Backfill Message in EDA Setting

Critical Changes
Changes
General Updates

We've updated the toast message that displays when you run the Course Connection backfill to align it with other similar messages.

Issues Closed
Closes  #1039
New Metadata
Deleted Metadata
Testing Notes

Go to EDA Settings -> Course Connection tab -> Backfill tab
Check the box 'I understand and am ready to run Backfill' and the click the button "Run backfill"
A toast message should appear on the top with the text "Backfill was started successfully."

@skosgi1 This seems to work great, but I'm surprised the success and error messages were never made as custom labels. Can you create labels for these, and confirm the text with Julie?
Also, since this is a customer-facing change we should have a Github Issue associated with this.

@robertbwatson I am still waiting on Docs but meanwhile can you take another pass at it? Thanks.

updated PR text

Thanks @juliesnow We are actually updating the text to a Toast. So may be something like this:
We've updated the message that displays when you run the Course Connection backfill to a toast message to align it with other similar messages. Also, can you take a quick pass at the 2 messages below regarding the same:
1)Backfill was started successfully.
2)There was an error when starting the backfill

@robertbwatson Update the message to "The backfill was queued successfully." based on discussion with Jullie offline. The error message remains the same. Thx.


Export PCAP

In addition to events, Giganto also stores packets.
In the case of events, it has the function of receiving a user's export request and saving it as a JSON or CSV file.
When receiving an export request for packets included in a specific session, it is necessary to add a function to combine packets and export them to a PCAP file.

@syncpark,
I don't fully understand why this feature gives any benefits comparing sending PCAP as such. Could you elaborate more on this?


Add eastwood and check code

Check for smells, unused requires, etc.

Did this today (committed, but not yet pushed).


Event Viewer flooded by Cloud Connector

Our server has event viewer flooded with the following messages:
The description for Event ID 3 from source Google Cloud Print Connector cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
Printers are already in sync; there are 2

How can I stop this?

Go to
https://github.com/google/cloud-print-connector/wiki/Configuration
And Search for log-level
Hth

This should be fixed by #448 which reduces these log entries to DEBUG level.

Go to
https://github.com/google/cloud-print-connector/wiki/Configuration
And Search for log-level
Hth

Worked thanks!


Add S.digest and use it instead of AO.add

The handling of hashes could be a bit simplified: we should have one toplevel Hash module (instead of one hash per sub-store); and now that we have a consistent invariant hash(encode_bin(x)) = AO.add(x), we should use it everywhere and replace the occurrences of AO.add by a new digest function.
This will put less write pressure on the underlying storage backend and allows us to re-use caches more efficiently.

See #579

This is done in irmin 2.0.


Stanford parser

Stanford parser accepts only JDK8. Currently I word with OpenJDK7.
May be I have to use an old version

Using version v3.4.1


How do we handle hard cases of variant naming (with examples)?

This issue was created in response to a sub-thread in #312, excerpted below. The goal of the issue is to identify cases of hard-to-name variants and potential solutions.
@aws wrote:

Can CSN handle very famous variants such as the causative mutation of sickle cell anemia (when homozygous) - HBB E6V?
http://ghr.nlm.nih.gov/gene/HBB
"Specifically, the amino acid glutamic acid is replaced with the amino acid valine at position 6 in beta-globin, written as Glu6Val or E6V."
versus
http://www.ncbi.nlm.nih.gov/clinvar/RCV000016573
http://www.uniprot.org/uniprot/P68871
"NM_000518.4(HBB):c.20A>T (p.Glu7Val)"
The preferred name in ClinVar. N.B. that prior to cleavage of the initiator methionine HBB E6V would actually be HBB E7V.
Should we collect a set of clinically important but hard to name variants?

And a reply from @fcunningham:

Great - we have a folder for hard to annotate variants - please do contribute clinically important but hard to name variants here: https://drive.google.com/folderview?id=0B6jIo0eTEQxrfmJPSF9hQ1pscWNJVUc5bldCVWpGOVd1QzJORklxOTJLVnE3d2pkWmt2N2c&usp=sharing

I might be missing something; is there a description anywhere of why each variant is difficult, and some indication of what we would like the annotation to capture?

The variants in the folder Fiona mentioned were cases I compiled from
NA12878 where multiple indels were in exons and could be represented in vcf
in different ways, but they pose a particular challenge for annotation.
These are only one type of hard case though.
Cheers,
Justin
On Mon, Jun 15, 2015 at 10:37 AM EliseRuark<EMAIL_ADDRESS>wrote:

I might be missing something; is there a description anywhere of why each
variant is difficult, and some indication of what we would like the
annotation to capture?
—
Reply to this email directly or view it on GitHub
https://github.com/ga4gh/schemas/issues/333#issuecomment-112091787.

@awz's example is not a complex variant Fiona/Justin's table intends to solve. It is an inconsistency between protein and CDS coordinate due to post translation modification, which could be common as Met cleavage seems not rare in human.

@lh3 thanks for clarifying.   It is a bit frustrating that this example is both so important and, potentially, quite common as you say.
Maybe we need a higher level document that describes the various "buckets" that hard to name variants fall in.   Then we could make a separate document of representative examples for each bucket.

Let me pose this question.  How exactly would you prefer the ideal way of annotating such complex/multi-domain cases?  Would you like to group multiple variants into one annotation?  If the order is not important, then we can generate regular expression rule-sets for any number of combinations including regions that map back to the same annotation.  The results can then be transmitted similarly to this as for proteomics:
http://wiki.thegpm.org/wiki/Nomenclature_for_the_description_of_protein_sequence_modifications
In fact, we can even hash (SHA256) an annotation group and just transmit that so as to minimize the wire throughput, and then match it at the receiving end against a dictionary to expand back the full annotation.
Basically what I'm asking is take a group and just write how you would ideally like to annotate it - in full form without any compression - even if it has multiple annotations, since an annotation group/set is possible.
Thanks,
Paul

If I understood correctly, the HGVS "p." notation's page says:
...descriptions at protein level should describe the changes observed on protein level and
not try to incorporate any knowledge regarding the change at DNA-level

nevertheless, if there is no protein level evidence:
...to indicate that the description at protein level is without any experimental evidence it is
recommended that, when RNA nor protein has been analysed, the description is given
between brackets, like p.(Arg22Ser)

So, to answer the question,
i) NM_000518.4(HBB):c.20A>T (p.Glu7Val) would be used to indicate protein
change calculated from DNA evidence.
ii) Glu6Val would be used to indicate "protein level evidence" (unless there is
a reliable way to predict Met cleavage using DNA / RNA sequence alone).
Do you know any algorithm?
In my opinion, since in sequencing experiments we don't have protein level evidence, the first way of expressing the variant would be preferred.


Watch firewall reload in sysconfigwatcher

Related-Issue: https://issues.redhat.com/browse/NP-641

resolved merge conflict.

This change is LGTM, but we need to wait until 4.12 branch is created.
/hold

For CSI, we drew a boundary so there was a clear line between the system configuration the user had to provide (volume groups and the lvmd.conf file) and the setup that MicroShift did (a default lvmd.conf if none is provided). Can we create a similar boundary for CNI so that we do not need to monitor the firewall rules, IP, or other networking changes?

Agree on the boundary statement between microshift and plugins, I thought about adding this in CNI implementation only.
One consideration of adding this monitor logic in sysconfWatcher is that iptables could be used by other components.
For example:  with hostPort in pod spec, iptables rules are used to map host ports to container ports, they will be affected by firewall reload as well. These hostPort iptables are not managed by CNI.

For CSI, we drew a boundary so there was a clear line between the system configuration the user had to provide (volume groups and the lvmd.conf file) and the setup that MicroShift did (a default lvmd.conf if none is provided). Can we create a similar boundary for CNI so that we do not need to monitor the firewall rules, IP, or other networking changes?

Agree on the boundary statement between microshift and plugins, I thought about adding this in CNI implementation only. One consideration of adding this monitor logic in sysconfWatcher is that iptables could be used by other components. For example: with hostPort in pod spec, iptables rules are used to map host ports to container ports, they will be affected by firewall reload as well. These hostPort iptables are not managed by CNI.

Is there a way to organize the system so that we do not need to restart MicroShift when firewall rules change at all? Can we isolate the rule sets that users manage from the ones that MicroShift manages somehow?

For CSI, we drew a boundary so there was a clear line between the system configuration the user had to provide (volume groups and the lvmd.conf file) and the setup that MicroShift did (a default lvmd.conf if none is provided). Can we create a similar boundary for CNI so that we do not need to monitor the firewall rules, IP, or other networking changes?

Agree on the boundary statement between microshift and plugins, I thought about adding this in CNI implementation only. One consideration of adding this monitor logic in sysconfWatcher is that iptables could be used by other components. For example: with hostPort in pod spec, iptables rules are used to map host ports to container ports, they will be affected by firewall reload as well. These hostPort iptables are not managed by CNI.

Is there a way to organize the system so that we do not need to restart MicroShift when firewall rules change at all? Can we isolate the rule sets that users manage from the ones that MicroShift manages somehow?

@dhellmann  I moved the iptable detection logic to infrastructure manager service  which only reloads affected microshift components (router and ovnk). This avoids microshift restart. For application workload that uses hostPort, this won't help since the iptable rules for hostPort are injected by cri-o during pod sandbox creation, these rules won't be reconciled periodically unless recreating the workload. So current patch takes care of microshift components when firewall reload happens, we probably want to document that user workload with hostPort could be impacted by user action (reload firewall). wdyt?

/retest

/hold cancel

@dhellmann I left a comment inside about could we make something like this work with pluggable CNI.

/hold
I believe I found an alternative to make firewalld leave iptables alone (not flushing them)

/hold

I think since we took #1306 we no longer need this. Please reopen the PR if I misunderstood.
/close


TakeScreenshotOnFailureRunListener is not removed after successful test case

When running multiple test cases in one class and one test case fails, depending on the amount of TakeScreenshotOnFailureRunListener objects added to the RunNotifier, multiple screenshots will be taken (with other test case method names in the image name).
This is because the listeners are added and kept inside the RunListener list.

Looks good! Merging this an releasing it before the end of this weekend. Thanks!

@gunnee
Should be released now with version 2.1.0


Bitwise operators for negative numbers

Currently, the bitwise operators (and, or, xor) only work for non-negative numbers. I suggest also supporting negative numbers, treating them as if they were represented using 2's complement (the standard representation for signed integers). This would also allow implementing not x, by simply doing -x - 1.

This would also allow implementing not x, by simply doing -x - 1.

This sentence is confusing, we do not need and, or nor xor between negative numbers to implement not x.

I suggest also supporting negative numbers, treating them as if they were represented using 2's complement

I am not sure how to interpret the BigInt 0xFFFF. Is it -1 or is it 2^32 ? 2's complement representation depends on a limit for the type to be represented, how do we fix the limit ?
By the length of the smallest of the bitwise operands, or by the length of the greatest of the operands ?
How do we take the sign of the BigInt into account ? The issue does not explains this.
I suggest to use the length of the greatest of the operands :
Let us say, we have one BigInt a of length 5 and one BigInt b of length 3. Then I could try to find the 2's complement representation using 32*5 bits for each with one sign bit (even if the BigInt b is of length 3, I can always add 2 limbs). There is a problem if the MSB of a is 1, we need one more bit to have a 2's complement representation.
I'll try to give another example with bits, that will be clearer.
Let us say, BigInts are represented this time with limbs of 8 bits plus a sign flag.
If I want to compute +0x9 and -0x3, I would need for each of them only one bit to represent them as BigInt, but if I check the most significant bit of the first one 0x9, since it is set to 1, I can not find a 2's complement representation for him with only 8 bits.
So I will convert +0x9 to 0x09 (using two limbs) and -0x3 to 0xFC (using two limbs). The and is now computable and gives 0x8.
So actually there are 4 cases :

MSB of the BigInt is 1 :

BigInt is positive (+) so we add a limb with only zeros (0x0)
BigInt is negative (-) so we add a limb with only ones (0xF) and find the 2's complement representation of lower limbs but

MSB of the BigInt is 0 : (If that is the case for both of the operands, we do not need to add a limb)
BigInt is positive (+) we add a limb with only zeros
BigInt is negative (-) we add a limb with only ones (0xF) and find the 2's complement representation of lower limbs
Rather than using another limb, we might use just one other byte (a Boolean).

We need to limit the cost of the algorithm, and not make a copy (for padding) of a small BigInt (-1 for example) into a big BigInt when the other input is a BigInt with 250 limbs or more.

This would also allow implementing not x, by simply doing -x - 1.

This sentence is confusing, we do not need and, or nor xor between negative numbers to implement not x.

"This" was referring to "treating negative numbers as if they were represented using 2's complement". I admit that my wording can be confusing, and, or and xor are of course not needed to implement not

I am not sure how to interpret the BigInt 0xFFFF. Is it -1 or is it 2^32 ?

It would be 2^32-1.

2's complement representation depends on a limit for the type to be represented, how do we fix the limit ? By the length of the smallest of the bitwise operands, or by the length of the greatest of the operands ? How do we take the sign of the BigInt into account ? The issue does not explains this.

We don't fix the limit. My suggestion is not that we represent the BigInts in 2's complement, we just act as if they were. They would still be represented as a sign and the absolute value, as is the case today (this is also the representation that most other implementations choose afaik). A negative number would conceptually have an infinite number of leading 1s.

Let us say, BigInts are represented this time with limbs of 8 bits plus a sign flag. If I want to compute +0x9 and -0x3, I would need for each of them only one bit to represent them as BigInt, but if I check the most significant bit of the first one 0x9, since it is set to 1, I can not find a 2's complement representation for him with only 8 bits.

9 is 00001001 in binary using 8 bits, so the MSB would be 0 and not 1. I assume you meant 4 bits? Either way, why would you need to find its 2's complement?

So I will convert +0x9 to 0x09 (using two limbs) and -0x3 to 0xFC (using two limbs). The and is now computable and gives 0x8. So actually there are 4 cases :

My suggestion doesn't require computing any 2's complements. On first thought, it could be implemented by subtracting 1 (to get not x) for negative numbers (that would at most require one additional limb, although that case could possibly be optimized) and treating the limbs differently. Using your example (assuming 4 bit limbs), this would work as follows:

initial input: a = +0b1001, b = -0b0011
subtracting 1 from b: a = 0b1001, b = 0b0100 (inverted)
and (respecting that b is inverted): 0b1001

So the result is 9, which is also what you get with normal ints.

We need to limit the cost of the algorithm, and not make a copy (for padding) of a small BigInt (-1 for example) into a big BigInt when the other input is a BigInt with 250 limbs or more.

That wouldn't be necessary. For additional limbs, negative numbers would be treated as having all 1s.

Why is bitwise operators for negative numbers needed?
Is there any use case?
And why treating them as if they were represented using 2's complement?
Is it just because the standard representation for signed integers in fixed size int?
Just do bitwise operation as is doesn't work?

Why is bitwise operators for negative numbers needed? Is there any use case?

Any use case of normal bitwise operators that involves not, really, e.g. you can do x and (not 0b01010101'bi) to only keep the 0th, 2nd, 4th and 6th bit of x.

And why treating them as if they were represented using 2's complement? Is it just because the standard representation for signed integers in fixed size int?

Because it's how fixed size integers are represented and it's how at least I would expect it to work. This is also what all the other bigint libraries (that I'm aware of) do.

Just do bitwise operation as is doesn't work?

Sorry, I don't know what you mean by this.

Why is bitwise operators for negative numbers needed? Is there any use case?

Any use case of normal bitwise operators that involves not, really, e.g. you can do x and (not 0b01010101'bi) to only keep the 0th, 2nd, 4th and 6th bit of x.

I read https://github.com/nim-lang/bigints/pull/111, and it seems treating negative numbers as if they were represented using 2's complement requires allocating temporary BigInt and copying arguments.
This andNot function can do x and (not 0b01010101'bi) without allocating temporary BitInt.
func bitwiseAndNot(a: var BigInt, b, c: BigInt) =
  a.limbs.setLen(b.limbs.len)
  let m = min(b.limbs.len, c.limbs.len)
  for i in 0 ..< m:
    a.limbs[i] = b.limbs[i] and (not c.limbs[i])

  if b.limbs.len > c.limbs.len:
    for i in m ..< b.limbs.len:
      a.limbs[i] = b.limbs[i]

func andNot*(a, b: BigInt): BigInt =
  ## Bitwise `a and (not b)`
  assert (not a.isNegative) and (not b.isNegative)
  bitwiseAndNot(result, a, b)
  normalize(result)

Just do bitwise operation as is doesn't work?

Sorry, I don't know what you mean by this.

I thought about doing bitwise operation to negative numbers in the same way as positive numbers.
But it doesn't work for your case.

we are not going to write every pair of operators just to avoid temporary allocation : andNot, notAnd, andXor, etc ...
This shows that it is possible to avoid allocation for this special case, but can you do it generically ?

I think using ones' complement instead of two's complement can avoid allocation.
Ones' complement just inverts bits when it is negative.
When negative number is not directly used for bit operation, result of ones' complement and two's complement are same.
But when negative number is used, result of them is not same.
For example:
import bigints

let a = 0b001111'bi
echo a and not (0b010101'bi)
echo a and not (0b101010'bi)
echo a and -1'bi
echo a and -2'bi
echo a and -3'bi

Output when two's complement is used:
10
5
15
14
13

Output when ones' complement is used:
10
5
14
13
12

But GMP uses two's complement for bit operations.
Ones' complement might be counterintuitive for users as almost all modern CPU uses two's complement.

I think using ones' complement instead of two's complement can avoid allocation.

Sure, you could, but that would be inconsistent with how normal integers work. Another problem would be that "all 1s" is then "-0", which is currently handled as being equal to 0 (which is "all 0s").

But GMP uses two's complement for bit operations. Ones' complement might be counterintuitive for users as almost all modern CPU uses two's complement.

Not only GMP, but also the standard bigint implementations for Rust, Java, Python, D, Go, etc.

Please make a distinction between the result we want and the implementation we use. According to the gmp manual :
« functions behave as if twos complement arithmetic were used (although sign-magnitude is the actual implementation). »
See https://gmplib.org/manual/Integer-Logic-and-Bit-Fiddling
https://gmplib.org/repo/gmp-6.2/file/tip/mpz/xor.c
https://gmplib.org/repo/gmp-6.2/file/tip/mpz/ior.c
https://gmplib.org/repo/gmp-6.2/file/tip/mpz/neg.c
You can especially look at the comments of the and function : https://gmplib.org/repo/gmp-6.2/file/tip/mpz/and.c
If we can use another representation to avoid allocation while outputting the correct result, at least for certain cases, why not ?
If not, let us just validate this PR.


Add A Config

I don't know if it already exists in the mod, but it would be nice if there was a way to disable the different knife variants and only have the new cabinets and foods.

It would be nice to disable specific types of knives and leave some open, like the copper knife, (by the way, will the copper knife oxidize?)


RR complains about missing App Name in Sparkle feed

When I feed the following Sparkle update url to RR
http://www.iffmpeg.com/iFFmpeg6.appcast
it complains
[ERROR] I wasn't able to determine the name of this app, so I can't make any recipes.
[ERROR]

This puzzles me because in the appcast file there is a
<name>iFFmpeg</name>
entry.
Am I missing something here?

Hi @workflowsguy - I've never seen a Sparkle feed formatted like that, and I'm not surprised that Recipe Robot is having trouble parsing it.
However, I do see a download URL listed that looks exactly like a "latest version" zip:
http://www.iffmpeg.com/iFFmpeg.zip
Additionally, on the iFFmpeg home page there's a link to a dmg download:
http://www.iffmpeg.com/iFFmpeg.dmg
Try running either of those URLs through Recipe Robot and see what you get. ;-)


Conflict with colorcolumn?

For lines with both indent-guides and colorcolumn (setlocal colorcolumn=100), I observed a right shift of color column.

Sorry, not related to indent guides.


Example dataset

Since I am not an expert on ChIP. Is there any example dataset we could use to test the package?

Added unit tests and sample data :)


Weird warning

I'm getting a warning with the following message;
"Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead"
which seems straight-forward enough, but I can't get rid of it. Even setting a static height on contentView doesn't remove it. Am I missing something regarding how contraints are applied to UITableViewCells ?
Complete implementation: https://gist.github.com/buffpojken/b24e34d086885741caa4

And I now find this to be completely unrelated to MotionKit - my apologies!


Make phone-number specs consistent with x-common data

Recently x-common got data for phone-numbers:
https://github.com/exercism/x-common/blob/master/exercises/phone-number/canonical-data.json
Make our tests consistent with that data.

@tejasbubane Thanks for doing this!
At first I hesitated, because I had a dim memory of the README telling the user to return '0000000000' for invalid, but I must have been dreaming...

Thanks @tejasbubane, you're doing a great job! Awesome!


Support lazy initialization of openDB calls

Codecov Report

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

Additional details and impacted files

@@           Coverage Diff           @@
##             main       #8   +/-   ##
=======================================
  Coverage        ?   74.74%
=======================================
  Files           ?        9
  Lines           ?     1069
  Branches        ?        0
=======================================
  Hits            ?      799
  Misses          ?      205
  Partials        ?       65

Flag
Coverage Δ

unit-tests
74.74% <0.00%> (?)

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

Code Coverage reporting is added. Merging to continue with documentation and misc fixes


[REQ] Put this on the AUR

Just a reminder, I guess it would make sense to put this here
I could do it myself, if you'd like that, but I assume you'd prefer to keep it with the other ones

I dont maintain aur stuff and it's up to ya (the community) to do it

Oh, sorry, I saw this https://github.com/hyprwm/aur and assumed this stuff was being managed by you
Brb then, gotta publish something really fast ;)

@vaxerski what should the version be?

Oh, sorry, I saw this https://github.com/hyprwm/aur and assumed this stuff was being managed by you

Old repo made back when kainoa was managing da aur.

@vaxerski what should the version be? I was thinking maybe 0.0.1.r13.5541017-1?

cmake ver is 0.1.0. I'll make a release soon too with that.

Ok fixed, it is now 0.1.0.r0.gcd592840-1
I will close this unless you have anything else to add

nope can be closed, thanks!


Implement bar chart

We'll probably need a bar chart component

Implemented bar chart that can handle both continuous and categorical data: bar-chart-implementation
Number of steps per hour or day is an example where we would have continuous data (time series), and number of answers for a specific question in a questionnaire is an example where we have categorical data.
The bar chart with continuous data (time series) will not show a bar for time periods where there was no measurement (or the value was zero), which I think makes sense for counting the number of steps over time where we might have days with zero steps if for example the device is not worn.
However, for the bar chart with time series to make sense, we need the time periods to be equivalent (like number of steps in either 1 day, or 1 hour, etc). I assume this will be handled in the backend?
Anything else that we need to consider for the first version of the bar chart?
@herkulano @kerzmaximilian

Looks great! :shipit:

@petcupaula Regarding the data, I agree completely. There should be no "holes" in the data. If for example, a day has no values, that day should be in the data with a value of zero.

Great work! I also agree that all time points should be present on the graph. Perhaps it could be useful to make a visual distinction between 'zero' and 'no data'. For step counts these two will probably be equivalent. But let's say we're plotting a mood score, than a few days with a reported happiness of zero is very different than a few days of no data.

@dennyverbeeck I agree. In that case, the data would still have that day (there would be no gaps in the data) but its value would be null.

@dennyverbeeck Regarding the representation of the difference between null and zero, I think adding a visual representation for zero could add noise to the graph and make it more difficult to read, doing more harm that good.
We should investigate further cases. But for example in regarding happiness it's common to have a scale from 1-10, so there's always some form of representation in the chart when there's a value for that "day".
In the case of steps, food logging and others, it's common practice not to have this distinction between zero values and null values because of the noise it creates and it's assumption that it's impossible to have zero steps or food log, if you are using the device there will be at least a couple of steps.

That's a good point about the scales. Just to be clear, i don't suggest to make a special treatment for zero itself. Just that the representation for zero and null not be identical. When you are looking at your own data you can make sense of the values. But here a clinician will be looking at the data as well. For instance, not wearing a device results in it reporting zero steps. Wearing a device but the battery died should result in no report at all, i.e. null. So was the patient not wearing the device? Is his motivation to participate in the trial declining? Did he simply forget to charge the device? I think a clinician might want to make the distinction. Of course i could be wrong about this :wink:
However it's probably less straightforward then i initially thought. E.g. on a chart with 7 bars, looking at a week, it's easy to show a small grayed-out label 'No data' instead of a bar. When looking at a larger chunk of data this will indeed introduce unwanted noise and do more harm then good. So for now i just have a comment and no real suggestion yet :stuck_out_tongue:

Agree, I'll try to sketch a couple of alternatives with subtlety in mind to make it easy to understand the difference but not get in the way of the overall readability of the chart.

Perfect!

Null values mockup:


Constant Labels Alternative

The Prometheus Client doesn't offer a constant labels support. See https://github.com/prometheus/client_java/issues/320
While understandable and service discovery is the best place to put such labels, alternatives can be useful

Here is the solution I found @antongocode @hendrikvh @drakenator
https://stackoverflow.com/questions/47696751/how-can-i-add-common-tags-to-all-my-prometheus-metrics-using-the-java-client/47696752#47696752


[dumb-init] docker-bench-security.sh: No such file or directory

Hi,
I saw someone else raised this issue before, but there are no solution to this issue.
Can anyone advise what should I check in my Docker Toolbox?

Hi @ahteck, are you building a local copy or using the available image? Have you tried running the shell script?
And it seems that is a Windows shell you're running?

Hi @ahteck, are you building a local copy or using the available image? Have you tried running the shell script?
And it seems that is a Windows shell you're running?

I have built a local copy.
Yes, I am running on Docker Toolbox in Windows 10
https://docs.docker.com/toolbox/toolbox_install_windows/

This is the result when I ran the script

I haven't tested on Windows 10, but let's try it.
First, it seems you're missing the ss command.
$ dpkg -S /bin/ss
iproute2: /bin/ss

I'm getting same error on macOS Mojave 10.14.6:
$ docker run -it --net host --pid host --userns host --cap-add audit_control \
>     -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \
>     -v /etc:/etc \
>     -v /usr/local/bin:/usr/local/bin:ro \
>     -v /var/lib:/var/lib:ro \
>     -v /var/run/docker.sock:/var/run/docker.sock:ro \
>     --label docker_bench_security \
>     docker/docker-bench-security
[dumb-init] docker-bench-security.sh: No such file or directory
$
$
$ docker -v
Docker version 19.03.8, build afacb8b

Same error when building and running locally.

Hi there @IrmantasM, I incorrectly added -v /usr/local/bin:/usr/local/bin:ro to the README.
Will fix.

I believe this is fixed in https://github.com/docker/docker-bench-security/pull/429

Thanks @konstruktoid, it works fine now!

Able to run pre-built container
Closing this issue


Adds support of "+" and "-" between xsd:dateTime and xsd:duration to SPARQL

It would be nice to add support of xsd:dateTime +/- xsd:duration and xsd:dateTime - xsd:dateTime (returning an xsd:duration) operations to SPARQL.
Jena already supports such operators. see https://github.com/apache/jena/blob/master/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueOps.java
Probably blocked by #164

Seems related to (or duplicate of ?) of #524 ?


process_need_ref:: env._warnfunc may/will crash

When a need (-ref) is not found, Sphinx-doc does crash: It calls env.warn_node(), which will call self._warnfunc, which is None. So, the warning results in a dump!
In file sphinx/environment/__init__.py, the function  BuildEnvironment.set_warnfunc() mentions

" ... is now  deprecated. Use sphinx.util.logging instead." (RemovedInSphinx20Warning)

FIX
With a few lines, this crash can be fixed. Although the output is possible to a the author intends - it does the trick however. And mentions the missing ref, without crashing. And with resulting in a resulting doc.
add (top-of-file)
from sphinx.util import logging
log = logging.getLogger(__name__)

Replace:
The line with env.warn_node() with:
 log.warning('Needs: need %s not found' % node_need_ref['reftarget'], node_need_ref)

Thanks for the detailed bug report and also for diving so deep into the code to provide a working solution.
Fix will be available with upcoming release.


poor image quality

It is not easy to start a successful project, let's hope that it will improve over time.
The quality of the images leaves much to be desired, it's terrible.
Humans and landscapes are not realistic at all, maybe it's good for anime, cartoon, comic... but for realistic pictures it's a disaster.
Its only advantages over other models is its superior speed and the variety of aspect ratios available.
A lot has to change to compete with models like Flux, Shuttle....
Can anyone show a positive and negative prompts that really work?

I just came here to write the same thing, however if you check the "wrapper" which I think came before this repo, it looks great in the workflow attached?
https://github.com/zmwv823/ComfyUI-Sana/blob/main/workflow/Img_Gen-Sana-wf.png

Thanks shaum-ba, it is a beautiful image.
As I did it and it works for me (I do it with all custom nodes).
1- I never do it from ComfyUI Manager.
I go to the github of the custom node, in this example Sana:
https://github.com/city96/ComfyUI_ExtraModels.git  (copy)
Go to  your custom nodes folder, in my case : C:\Users\Luna\Documents\ComfyUI_windows_portable\ComfyUI\custom_nodes
cmd and it will open your command prompt (windows).
git clone https://github.com/city96/ComfyUI_ExtraModels.git  (the custom node will be installed)
don't close the window, followed write cd..
again cd..  , you will reach C:\Users------\Documents\ComfyUI_windows_portable:
write:  python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI_ExtraModels\requirements.txt
and everything will install fine, at least it works for me.

To be clear, I can generate images just fine before replying to your message. The reply was specifically related to poor image quality, my images are like cartoons, the faces are horrible and it's nothing like the image I shared above which is why I replied.


null, auto, invisible and unsigned struct tag now accept boolean values

Summary by CodeRabbit

Refactor

Improved parsing logic for boolean column options, enhancing handling of "null", "auto", "invisible", and "unsigned" settings.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

35 of 55 (63.64%)  changed or added relevant lines in 1 file are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.5%) to 66.128%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

table.go
35
55
63.64%

Files with Coverage Reduction
New Missed Lines
%

table.go
1
87.4%

Totals

Change from base Build<PHONE_NUMBER>:
-0.5%

Covered Lines:
736

Relevant Lines:
1113

💛  - Coveralls


Add support for environment variables, annotations, labels and tolera…

Add support for environment variables, annotations, labels, and tolerations

Why are these changes needed?
It is quite important to be able to specify environment variables, annotations, labels, and tolerations to control pod's behavior. This is exposed in Kuberay operator but not in the API server

The basic changes are:

Extending cluster and config protos to add new variables and regenerate go client
In the API server project modified podTemplateSpec building in utils cluster to add new values
In the API server project modified template config map creation in utils cluster to add new values
In the API server project modified CRD to API conversion in model converter to create new values

The rest of the changes are due to switching to go 1.19,
Related issue number

Checks

[ X] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[X ] Manual tests
[ ] This PR is not tested :(

Hi @kevin85421
The PR is so trivial, there is nothing really to test. It just adds standard parameters  to PodSpec, that's it
I am using Go 1.19 for all of my development, 1.17 will work the same.
Also, the API server docker file is in the wrong place - it has to be in the root, but I did not fix it in the PR
Finally development.md refers to the file docker-image-builder.sh which does not exist


Allow sending a specific page of a pagination list

SpongeAPI | SpongeCommon
Replaces https://github.com/SpongePowered/SpongeAPI/pull/1539
Also cleans up some Javadocs. If you have any suggestions here(in only this class) for changes to any Javadocs feel free to point them out.

@ST-DDT Thanks for the great points, will make these changes shortly :)

@ST-DDT Thanks for the suggestions, I think I addressed them all, mind looking over the API and common changes one last time?

Also after noticing that the contents may not be null you have to throw an IllegalStateException in the build method and document it properly.

@ST-DDT I am thinking at the moment that maybe we should remove this check entirely, and default to an empty list. I'm not sure of the use-case but I don't see any problem in allowing there to be pagination lists without any content. They could still have the padding, header, title, footer, etc and that may be all they want.

These PRs are ready from my point of view and should be good to merge if everything looks good to everyone.
@kashike and @ryantheleach mind giving it a look?


Mouse/pointer events blocked while using arrow keys continuously

Describe the bug
Issue:
When using the arrow keys continuously pointer input stops responding.
Background:
I'm creating an application in Winui 3. Since updating from version 1.2 to version 1.3, pointer input stops working completely after a few seconds in the scenario where I simultaneously use the arrow keys continuously. In this app this results in no part of the application responding to any pointer input, except for the buttons in the title bar. When using other keys on the keyboard it resumes to normal behavior, but this is less than optimal.

This occurs even when no keyboard events are handled and a Canvas is used to display a object at the pointer position like in the example below.

Steps to reproduce the bug

Create a new Black App, Packaged (WinUI 3 in Desktop)

Note: This should be a project targeting the 1.3 version of the Microsoft.WindowsAppSDK. This issue did not occur in version 1.2 or earlier versions to my knowledge.

Replace the MainWindow.xaml content (the StackPanel) with the following code:
  <Grid>  	<Canvas Background="White" x:Name="PointerTestCanvas" PointerMoved="CanvasOnPointerMoved" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" IsHitTestVisible="True"  >  		<Rectangle x:Name="PointerTestRectangle" Fill="Red" Canvas.Left="0" Canvas.Top="0" Canvas.ZIndex="0" Width="100" Height="100" />  	</Canvas>  </Grid>
Remove the myButton_Click method from the code behind of MainWindow.xaml.cs.
Add the following code to the code behind of MainWindow.xaml.cs:
private void CanvasOnPointerMoved(object sender, PointerRoutedEventArgs e)  	{  		var position = e.GetCurrentPoint(sender as UIElement);  		Canvas.SetLeft(PointerTestRectangle, position.Position.X);  		Canvas.SetTop(PointerTestRectangle, position.Position.Y);  	}
Run the application, make sure it has focus,  and move the mouse/pointer so the rectangle will follow it. Keep one (or more) of the arrow keys pressed a couple of seconds (does not seem to be consistent and might sometimes take up to 10 seconds ) and watch as the pointer stops responding. In this case, as soon as you release the arrow key the pointer resumes normal behaviour.

If the application doesn't have focus this issue will not occur.

Expected behavior
I expected the mouse/pointer to keep responding to events like it did before version 1.3, even while the arrow keys are continuously used (like in for instance a game).
Screenshots
No response
NuGet package version
Windows App SDK 1.3.2: 1.3.230602002
Packaging type
Packaged (MSIX)
Windows version
Windows 11 version 22H2 (22621, 2022 Update)
IDE
Visual Studio 2022
Additional context
Doesn't seem to matter if:

It's a packaged or non-packaged app.
It's .NET 6 or .NET 7
It's a SwapChainPanel instead of a Canvas UI element.
Key modifiers are added to the input.

It's recommended to use SwapChainPanel.CreateCoreIndependentInputSource from a background thread to handle the scenario of getting continuous mouse messages that are not affected by what's in the UI thread's queue.
From your description, the UI thread's input queue is getting saturated from the keyboard messages (and potentially others as well). By design, all Win32 messages are processed in priority order (sent, post, quit, input, paint, timer) in essentially timestamp order. See GetMessage for details. If the app's UI thread can't keep up with processing the input messages quickly enough, new input messages will be added into the queue and coalesced where appropriate. This ensures that input event processing order occurs in the same order as the events were generated, which is important for changing focus with the mouse while typing.

@jeffstall: Thank you for your feedback. I will certainly look into the suggested implementation.
However, this does not explain why it only happens with the arrow keys. I'd also like to point out that this is a new "feature" since the 1.3 update and also occurs in the WinUI 3 Gallery. If you'd open the gallery and keep an arrow key pressed for a couple of seconds the complete user interface will stop responding to pointer events until you release the arrow key. This does not seem related to any code I've implemented.


Object Detection API: Unable to train a quantization aware Faster RCNN + Resnet50 object detector

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Debian Linux 9 (m26 Deep Learning Image) running on Google Cloud
TensorFlow installed from (source or binary): binary (using the one provided with the Deep Learning image 'tensorflow_gpu-1.13.1+nv-cp35-cp35m-linux_x86_64.whl')
TensorFlow version (use command below): 1.13.1
Python version: 3.5.3
CUDA/cuDNN version: CUDA 10.0 / cuDNN 7.4.1
GPU model and memory: NVIDIA Tesla V100

Describe the current behavior
When I try to fine tune a Faster RCNN + Resnet50 object detector I get a runtime error.
Stack trace:
Traceback (most recent call last):   File "models/research/object_detection/model_main.py", line 109, in <module>     tf.app.run()   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 125, in run     _sys.exit(main(argv))   File "models/research/object_detection/model_main.py", line 105, in main     tf.estimator.train_and_evaluate(estimator, train_spec, eval_specs[0])   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/training.py", line 471, in train_and_evaluate     return executor.run()   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/training.py", line 611, in run     return self.run_local()   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/training.py", line 712, in run_local     saving_listeners=saving_listeners)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 358, in train     loss = self._train_model(input_fn, hooks, saving_listeners)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1124, in _train_model     return self._train_model_default(input_fn, hooks, saving_listeners)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1154, in _train_model_default     features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow_estimator/python/estimator/estimator.py", line 1112, in _call_model_fn     model_fn_results = self._model_fn(features=features, **kwargs)   File "/home/klemen/ml/models/research/object_detection/model_lib.py", line 369, in model_fn     graph_rewriter_fn()   File "/home/klemen/ml//models/research/object_detection/builders/graph_rewriter_builder.py", line 37, in graph_rewrite_fn     quant_delay=graph_rewriter_config.quantization.delay   File "/home/klemen/ml//models/venv/lib/python3.5/site-packages/tensorflow/contrib/quantize/python/quantize_graph.py", line 205, in experimental_create_training_graph     scope=scope)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow/contrib/quantize/python/quantize_graph.py", line 73, in _create_graph     is_training=is_training)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow/contrib/quantize/python/fold_batch_norms.py", line 53, in FoldBatchNorms     graph, is_training, freeze_batch_norm_delay=freeze_batch_norm_delay)   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow/contrib/quantize/python/fold_batch_norms.py", line 98, in _FoldFusedBatchNorms     freeze_batch_norm_delay=freeze_batch_norm_delay))   File "/home/klemen/ml/models/venv/lib/python3.5/site-packages/tensorflow/contrib/quantize/python/fold_batch_norms.py", line 384, in _ComputeBatchNormCorrections     match.moving_variance_tensor + match.batch_epsilon) TypeError: unsupported operand type(s) for +: 'NoneType' and 'float'
Config used:
`model {
faster_rcnn {
num_classes: 1
image_resizer {
fixed_shape_resizer {
height: 600
width: 600
}
}
feature_extractor {
type: "faster_rcnn_resnet50"
first_stage_features_stride: 16
}
first_stage_anchor_generator {
grid_anchor_generator {
height_stride: 16
width_stride: 16
scales: 0.25
scales: 0.5
scales: 1.0
scales: 2.0
aspect_ratios: 0.5
aspect_ratios: 1.0
aspect_ratios: 2.0
}
}
first_stage_box_predictor_conv_hyperparams {
op: CONV
regularizer {
l2_regularizer {
weight: 0.0
}
}
initializer {
truncated_normal_initializer {
stddev: 0.00999999977648
}
}
}
first_stage_nms_score_threshold: 0.0
first_stage_nms_iou_threshold: 0.699999988079
first_stage_max_proposals: 20
first_stage_localization_loss_weight: 2.0
first_stage_objectness_loss_weight: 1.0
second_stage_batch_size: 20
initial_crop_size: 14
maxpool_kernel_size: 2
maxpool_stride: 2
second_stage_box_predictor {
mask_rcnn_box_predictor {
fc_hyperparams {
op: FC
regularizer {
l2_regularizer {
weight: 0.0
}
}
initializer {
variance_scaling_initializer {
factor: 1.0
uniform: true
mode: FAN_AVG
}
}
}
use_dropout: false
dropout_keep_probability: 1.0
}
}
second_stage_post_processing {
batch_non_max_suppression {
score_threshold: 0.300000011921
iou_threshold: 0.600000023842
max_detections_per_class: 20
max_total_detections: 20
}
score_converter: SOFTMAX
}
second_stage_localization_loss_weight: 2.0
second_stage_classification_loss_weight: 1.0
}
}
train_config {
batch_size: 16
data_augmentation_options {
random_horizontal_flip {
}
}
optimizer {
momentum_optimizer {
learning_rate {
manual_step_learning_rate {
initial_learning_rate: 0.000300000014249
schedule {
step: 0
learning_rate: 0.000300000014249
}
schedule {
step: 900000
learning_rate: 2.99999992421e-05
}
schedule {
step: 1200000
learning_rate: 3.00000010611e-06
}
}
}
momentum_optimizer_value: 0.899999976158
}
use_moving_average: false
}
gradient_clipping_by_norm: 10.0
fine_tune_checkpoint: "/home/klemen/ml/resnet50/model.ckpt"
fine_tune_checkpoint_type: "detection"
num_steps: 200000
}
train_input_reader: {
tf_record_input_reader {
input_path: "/home/klemen/ml/widerface-to-tfrecord/output/train.tfrecord-?????-of-00010"
}
label_map_path: "/home/klemen/ml/widerface-to-tfrecord/output/face_label_map.pbtxt"
}
eval_config: {
metrics_set: "coco_detection_metrics"
num_examples: 1000
}
eval_input_reader: {
tf_record_input_reader {
input_path: "/home/klemen/ml/widerface-to-tfrecord/output/val.tfrecord-?????-of-00010"
}
label_map_path: "/home/klemen/ml/widerface-to-tfrecord/output/face_label_map.pbtxt"
shuffle: false
num_readers: 1
}
graph_rewriter {
quantization {
delay: 100
activation_bits: 8
weight_bits: 8
}
}
`
Describe the expected behavior
It's supposed to train the model and not throw the error.
Code to reproduce the issue
Get the Faster RCNN + ResNet50 pretrained model from http://download.tensorflow.org/models/object_detection/faster_rcnn_resnet50_lowproposals_coco_2018_01_28.tar.gz and run models/research/object_detection/model_main.py with the above config.

@pkulzc , do you perhaps know what might be wrong?

@klemen-forstneric : Please help us to reproduce the issue since I was not able to find model_main.py file. Also will it be possible for you to provide us the code snippet that can replicate the issue. It will help us to proceed faster. Thanks!

Quantization is only support for SSD models right now.

@achandraa, I was refering to this model_main.py. I wasn't using anything than that model_main.py and the above config with the pretrained ResNet 50.
@derekjchow, Okay I see. Is this something that's going to be fixed for TF 1 or should I wait for TF 2? Are you able to share any info what's going to happen to TF Object Detection API when TF 2 arrives?

Hi There,
We are checking to see if you still need help on this, as you are using an older version of tensorflow which is officially considered end of life . We recommend that you upgrade to the latest 2.x version and let us know if the issue still persists in newer versions. Please open a new issue for any help you need against 2.x, and we will get you the right help.
This issue will be closed automatically 7 days from now. If you still need help with this issue, please provide us with more information.

Hi @kumariko, I don't need help anymore. Thanks for the tip!

@klemen-forstneric Thanks for the update. closing this issue.


Completed Implementation of Animal Statistics System

This pull request implements the Animal Statistics System, which defines and manages attributes for various animals in the game, such as health, such as health, Death Hander, Damage Hander, Testing for Health Bar using automatic damage. Please review and provide feedback.

Apologies, I thought it was standard procedure to add anyone whose name appeared. It’s my first time using this process—sorry for the confusion!


YETUS-881. findbugs bw-compat support needs delete_parameter() calls

(!) A patch to the testing environment has been detected.
Re-executing against the patched versions to perform further tests.
The console is at https://builds.apache.org/job/yetus-github-multibranch/job/PR-54/1/console in case of problems.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

0
reexec
150
Docker mode activated.

_ Prechecks _

+1
dupname
0
No case conflicting files found.

+1
@author
0
The patch does not contain any @author tags.

_ master Compile Tests _

_ Patch Compile Tests _

+1
shellcheck
1
There were no new shellcheck issues.

+1
shelldocs
0
There were no new shelldocs issues.

+1
whitespace
0
The patch has no whitespace issues.

_ Other Tests _

0
asflicense
5
ASF License check generated no output?

177

Subsystem
Report/Notes

Docker
Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/yetus-github-multibranch/job/PR-54/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/yetus/pull/54

Optional Tests
dupname asflicense shellcheck shelldocs

uname
Linux 1c9f37fc96a6 4.4.0-141-generic #167~14.04.1-Ubuntu SMP Mon Dec 10 13:20:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
precommit/src/main/shell/personality/yetus.sh

git revision
master / 601c145

Max. process+thread count
41 (vs. ulimit of 2000)

modules
C: precommit U: precommit

Console output
https://builds.apache.org/job/yetus-github-multibranch/job/PR-54/1/console

versions
git=2.7.4 maven=3.3.9 shellcheck=0.6.0

Powered by
Apache Yetus 0.11.0-SNAPSHOT http://yetus.apache.org

This message was automatically generated.

Ha! Thanks!


README.org: add xgqt.gitlab.io/blog

Signed-off-by: Maciej Barć<EMAIL_ADDRESS>

Thank you very much!

Thank you very much!

No problem. Thanks for cooperation!


Fix error in secrets_fetcher after session change

Cherry-picked from #985
I think this was missed in #1041 when moving the session off of VaultClientFactory.

cc @rokob


updated alternative hands

this updates the new hand models with the following:
renamed bones to match the OpenXR standard
reworked the lowpoly mesh, since the previous version had too few vertices around the back of the hand added glove materials and models without nails

updated with lowpoly mesh fix, restructured prefab scenes into folders

restructured prefab scenes into corresponding folders for high/lowpoly
added additional highpoly glove mesh
fixed ghost material in the climbing scene
Note:
all hand scenes are now loaded as editable children, this way future updates to the mesh wont result in a total rework of the hand scenes

it might look odd that alot got replaced, the reason is simple
as the bones where renamed and additional ones came in as well, the whole tree of saved out anims was useless as it used the old names
regarding the split of the prefab scenes, as it got crowded, it seemed the most logical approach to move the hand prefab scenes into their corresponding folders for high/lowpoly

as mentioned on discord, am just wondering what to do with the blendtree, i would save em out for each hand and replace the current animationtree, same i did in the 4.0dev version of the hands
Since the cleanup_hands pr changed some naming, i didnt wanted to touch the animationtrees as they seemed broken but functional. However if i get greenlight to change the animationtrees, gonna do it


Document loop block type restriction.

I think the last expression of loop blocks (loop, while, etc.) must be the unit type. If that is correct, it should probably be specified in loop-expr.md.

Note: 'lab: loop { break 'lab 1 }; is also permitted by virtue of ! coercing to ().


 If you begin a file with the name '!', it becomes basically unusable by the shell without doing some other magic tricks -- tricks that at this moment I don't exactly know what they are.
When saving the ganache-cli db using --db, I did not expect all of the trie and block files to be stored in the root of my project. I also did not expect them all to begin with '!'.
This has basically broken my system at this point because Unix doesn't know how to remove these files. I can't select only these files without selecting the rest of my project files, since geth-cli also stupidly saves the blocks in the root dir of my project. So if I want to remove these blocks I have to delete the whole folder and thereby all of my project.
e.g.:

!trie_db!0x336bcc6ec1c8d7f526b2336a62e8fa3e7ac1db7467e0d6e2c6eaa68cf6000358
!blockHashes!0x0003b1e0cbc339bf36959dfcc7386ac93e7e8b70176d250744cc88dcd81f9e70          !trie_db!0x336c8ff04857a285182280affa92452e3f71b7186adce619e40dd275c970879f
!blockHashes!0x000831009747535206318d607b713f0c508b8766531cd3b5db7c2250d33064df          !trie_db!0x336d8724798de6c3c6c2dcf6a17eb5d1a639f09fac51ae20a9f7b4d0df736827
!blockHashes!0x0009efc66f537a4fce7b5f350b097d73a82cded369baebd47b8f1a2ed666fe26          !trie_db!0x337049359c3f5b1e15f883aca307511d5065c253b331c20b3

https://unix.stackexchange.com/questions/3747/understanding-the-exclamation-mark-in-bash

Here are the commands I used to restore my system:
rm -rf *trie_db* removes the trie_db
Similar commands for other files.
The only problem is that you might get an error like "/bin/rm: too many files". So you have to choose more selective prefixes and suffixes until those other files are specified. e.g. rm -rf *0xf*


Make study_day_range and date_range independent

Behaviour is currently somewhat confusing when study_day_range is set and date_range is not as shown in the screenshots below.
When the "x-axis scale" control is set to "date" the data is still filtered based on the `study_day_range" setting, but the full axis is shown. Would probably be better to either (1) subset the scale domain or (2) show the full data set in that view.

After talking with @samussiah, proposed solution is to make the ranges fully independent. In the screenshot above, 18 participants will be shown for x-axis scale = "day" while 150 participants will be shown for x-axis scale = "date".


Enhancement (Meta): Create processes to pull sponsorship data

Summary
We need to be able to pull sponsor data from our various sources.
This will include sources from:

GitHub Sponsors (GraphQL API)
OpenCollective
Polar.sh

Preferably this is an automated process done on each release so that documentation can be automatically updated to reduce maintenance burden.
This would also be useful for release notes, but we still need to automate that a little better (❓)
APIs Available

Polar.sh API
OpenCollective API
GitHub Sponsors GraphQL API

https://docs.github.com/en/sponsors/integrating-with-github-sponsors/configuring-webhooks-for-events-in-your-sponsored-account is also a thing

Basic Example
No response
Drawbacks and Impact
No response
Unresolved questions

Is this service managed by GitHub Actions or an external process (which we could run periodically via GitHub Actions or keep up to receive webhook events mentioned above?)
I would like to list individual sponsors as well as the larger ones, so we should pull everything we have.

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

Is this service managed by GitHub Actions or an external process

How about we collect set up a GH Action that periodically runs (e.g. once a day), fetches the data and pushes the updates to GH pages?  We could put a JSON file somewhere in there that the docs then load in and display a list of sponsors, that way we won't need to do a full doc rebuild.

😲  i like it


Enable Case Sensitive pattern match for file include and exclude

The changes are to enable the file consumer include and exclude patterns to be case sensitive. AntInclude & AntExclude with AntCaseSensitive options donot support java regex pattern match. To over come this, a new caseSesitive attribute is exposed in the FileEndpoint that determines the pattern match to be case sensitive or not. I have also added 3 new test classes and modified 3 existing tests that test with and with out the new flag.
Please review and approve

You can tell Java regular expressions to be case insensitive, so just use that. We should not add more options to the file component - it has a lot already.

Hi Claus,
Thanks for the quick review. The issue that I ran into is as below
Files to be matched (abc to be of any case): 20151116_103000_abc.txt, 20151116_123030_Abc.txt
Files that should not be matched: 20151116_123_abc.txt
Using java regex, include=[0-9]{8}_[0-9]{6}_abc.* (no option to say case insensitive match)
Using ant pattern matcher, antInclude=_abc &antFilterCaseSensitive=false
But this would also match the file 20151116_123_abc.txt
The GenericFileFilter also cannot be used as the accept method doesnt have access to other properties like include & exclude.
Due to the above reasons, I approached the addition of a new optional parameter on the FileEndpoint. I understand that there are a lot of options already but this would be useful just like the antFilterCaseSensitive
Thanks

See first answer
http://stackoverflow.com/questions/3436118/is-java-regex-case-insensitive

Sorry we do not want a gazillion of options to further complicate and confuse end users.

Can you try with the (?i) to turn on insenstive.
That said we could consider always being case insenstive on the file component. As IMHO people should not really use files with different case, eg test.xml and Test.xml should be the same file really.

You are welcome to work on a patch where the regular exp pattern in Camel is case insenstive by default which we can introduce from Camel 2.17 onwards, eg using Pattern.CASE_INSENSITIVE

Sounds great. I made and pushed the necessary changes in the same pull request. I tried to keep the changes simple. Please review and let me know in case further changes needed.

Thanks instead of the upperCase which you would have to provide a Locale.ENGLISH to support some i18n its imho better to create a Pattern and provide that insenstive flag. See for example that SO link. Then we can create the pattern once, so we do not have to re-create the regexp on each test.
Wonder if you could look into that?

Hi Claus,
I was making changes so that the pattern can be reused across all consumers from the same endpoint. How should I progress with the changes? Please suggest.
Thanks
Dwaraka


ISPN-5573 Node shutting down can throw IllegalLifecycleStateException

wrapped multiple times

Don't wrap Runtime with another Runtime for marshaller
Changed ILSE to extend CacheException to prevent extra wrapping

https://issues.jboss.org/browse/ISPN-5573

Tests should be fixed, please wait for full run.

Looking good, integrating. Remember to format git commit messages appropriately! (a title of 72 chars is recommended for easier reading, see here)


Merged .patch .diff --patch --diff

.patch .diff --patch --diff
Originally posted by @authorizations in https://github.com/FirebaseExtended/flutterfire/issues/4826#issuecomment-768601749

.patch

.patch

.patch

.patch


Fix failing test with build123d==0.6.0 by moving from Edge.intersections to Edge.find_intersection_points

Also added a workflow dispatch for manually triggering the tests since they weren't triggering on my fork correctly

Thanks for the effort :)


Bump kesytone chart

Includes changes to probes to avoid probewarnings

Could you add a link the changes you mention  in commit message?

Could you add a link the changes you mention in commit message?

Sorry I sent this yesterday nigth to check whether it would be working on the latest version or not, its just a test for the moment until I find out why its not working, as it may require more changes.

OK, thanks for explanation (but if you indeed find this is needed, include the link in the commit message :-) )

Closing this, will send a PR with this and other commits altogether as they are all small fixes for the same purpouse


Designated initializer cannot be declared

I was trying this (with swift3)
class Foo {
    init() {
    }
}

extension Foo: Unboxable {
    init(unboxer: Unboxer) {
      // Designated initializer cannot be declared in an extension of 'Foo';
      // did you mean this to be a convenience initializer?
    }
}

The only difference to my other code is that this is a class instead of a struct.

@tcurdt In Swift, designated and required initializers can only be declared as part of a class definition, not as an extension, if that class is not marked as final. So you can either choose to make your class final or to move the conformance of Unboxable and its required init method into the declaration of your class, like this:
class Foo {
    init() {
       // Designated initializer
    }

    convenience init(unboxer: Unboxable) {
        self.init()
    }
}

So that really is because it's class instead of a struct.
I wasn't aware of that particular difference.
Thanks for clearing this up.

No worries :)


Build and install instructions for Ubuntu/Debian in Readme

Information about prerequisites comes after build instructions raising unnecessary confusion. Before opening PR I wanted to confirm that there is no bigger idea behind current structure.
Also prerequisites missing gperf.

Which install instructions are you talking about specifically? I don't think gperf is required for building Alacritty.

@chrisduerr I am referring to the fact the the Debian/Ubuntu installation instructions section (https://github.com/jwilm/alacritty#debianubuntu) comes before the manual installation section (https://github.com/jwilm/alacritty#debianubuntu-1), that lists required dependencies.
Also I had the same dpkg issue as @acirtautas

I'm not actually aware of any dependency to gperf, unless .deb itself requires this. Could anyone of you (@acirtautas / @zaript) test if the application builds correctly when this dependency is removed from the Cargo.toml?
I'm going to open a PR to rework the section about the deb a bit, it would be nice to remove the useless dependency if it's not required.

@chrisduerr I've got successful deb install after removing gperf from the system and from the Cargo.toml. This dependency is redundant.

I've created this Installation wiki page in an attempt to rework the installation instructions in the README.
@zaript Please let me know if you'd consider this an improvement or leave any other kind of comments you have.

@chrisduerr The wiki page looks good to me. I played with idea of creating separate "full guide" sections for each distribution for people who just came for quick all-in-one-place solution, but there are too much repetition.

Yeah I've thought about that too. I've also thought about having a subsection for each distribution which would just walk through everything.
I'll keep this as a wiki for a bit, if you or anyone else see any potential improvements, feel free to add them directly. I believe everyone is able to edit wiki pages.

It seems like apt-get -f install will install all missing dependencies after doing cargo deb --install. If this works, just adding this to the README might be enough.
Can someone confirm that this works?

The instructions have been recently updated to structure everything a bit more clearly. That should hopefully resolve this issue.


[I Made This]: Serverless Transactional Messages App

Link to your material
https://github.com/san99tiago/aws-cdk-transactional-messages
Description
A well documented example of a Transactional Messages App that illustrates how to use Lambda PowerTools to process SQS messages in batches (with IaC on top of CDK). It uses LambdaPowerTools Logger, Tracing, DataClasses and includes UnitTests. The code is simple, but it's really usefull to understand basic concepts and integrate them with IaC deployments using CDK-Python.
Preferred contact
<EMAIL_ADDRESS>(Optional) Social Network
https://san99tiago.com
(Optional) Additional notes
Overview of example Architecture (with Lambda Function on top of Lambda PowerTools):

Acknowledgment

[X] I understand this content may be removed from Powertools documentation if it doesn't conform with the Code of Conduct

Thank you @san99tiago ! I'll create a PR to add this to our documentation today. Thank you for the nice sample!

+1 to what Ruben said :) You could make that example even more resilient and easier to read by introducing Powertools Batch feature: https://awslabs.github.io/aws-lambda-powertools-python/2.14.1/utilities/batch/#processing-messages-from-sqs

Example using Batch and with redundant parts now removed :) This now supports partial failures. You just need to change your Lambda function in CDK to enable reportBatchItemFailures and voila!
If you later want to add another example for Kinesis Data Streams or DynamoDB Streams, you'll only need to change 2-3 lines ;)

################################################################################
# Lambda Function to "simulate" the processing of the messages
################################################################################

# Built-in imports
import time
import json

# External imports
from aws_lambda_powertools import Logger, Tracer
from aws_lambda_powertools.utilities.typing import LambdaContext
from aws_lambda_powertools.utilities.batch import BatchProcessor, EventType, process_partial_response
from aws_lambda_powertools.utilities.batch.types import PartialItemFailureResponse
from aws_lambda_powertools.utilities.data_classes.sqs_event import SQSRecord

tracer = Tracer(service="MessagesAPIService")
logger = Logger(service="MessagesAPIService", log_uncaught_exceptions=True, owner="san99tiago")
processor = BatchProcessor(event_type=EventType.SQS)

@tracer.capture_method
def process_message(record: SQSRecord):
    # Add message id for each log statement so we know which message is being processed
    logger.append_keys(message_id=record.message_id)

    # Batch will call this function for each record and will handle partial failures
    logger.info(record.body)

    # Simulate a "time" processing delay for the messages
    logger.debug("Processing message")
    tracer.put_annotation(key="sqs_id", value=record.message_id)
    time.sleep(4)
    logger.debug("Finished processing message")

    try:
        # Validate "Message" key on input, otherwise return failure
        # Note: if input does not contain "Message" key, this will raise an error
        message = json.loads(record.body)["Message"]
        logger.info(f"Message: {message}")
        return True
    except:
        logger.exception("Failed to process message")
        raise

@logger.inject_lambda_context(log_event=True)
@tracer.capture_lambda_handler
def handler(event: dict, context: LambdaContext) -> PartialItemFailureResponse:
    logger.info("Starting messages processing")
    tracer.put_metadata(key="details", value="messages processing handler")

    number_of_records = len(event.get("Records", []))
    tracer.put_metadata(key="total_messages", value=number_of_records)

    batch_response = process_partial_response(event=event, record_handler=process_message, processor=processor, context=context)
    logger.info("Finished messages processing")

    return batch_response

Awesome @heitorlessa , that makes sense to be changed. I will add those Batch Processing SQS improvements later today in my repo so that it's 100% complaint.
Thanks for the feedback @rubenfonseca , @heitorlessa . I appreciate it!!

@san99tiago great!! Can you please ping us again here when you've done the changes? Then we will be ready to merge the PR :)

Hi @heitorlessa , @rubenfonseca . I have succesfully implemented and tested the suggestions. You can double check them with this PR:

https://github.com/san99tiago/aws-cdk-transactional-messages/pull/5

Let me know if additional requirements are needed. I appreciate the given feedback and taking the time to read the code!

Thank you for the quick turnaround @san99tiago ! We're merging the PR now :) It's a nice sample, congratulations!


STOR-1065: Rename node-driver-registrar RBAC and Rework sidecar bindings to bind common ClusterRoles

The first patch in this PR addresses the following issue:
Most of the RBAC seem to be unnecessary. The only important rule there is making the registrar privileged. Perms for "secrets" also required by node-label-updater, because otherwise it complains:
{"level":"info","timestamp":"2023-06-23T12:29:33.563Z","caller":"cmd/main.go:66","msg":"Starting controller for adding node labels","watcher-name":"vpc-node-label-updater"}
{"level":"info","timestamp":"2023-06-23T12:29:33.564Z","caller":"cmd/main.go:74","msg":"Getting node details","watcher-name":"vpc-node-label-updater"}
{"level":"info","timestamp":"2023-06-23T12:29:33.587Z","caller":"nodeupdater/utils.go:53","msg":"Fetching secret configuration.","watcher-name":"vpc-node-label-updater"}
{"level":"info","timestamp":"2023-06-23T12:29:33.587Z","caller":"authenticator/authenticator.go:48","msg":"Initializing authenticator","name":"secret-provider","secret-provider-type":"unmanaged-secret-provider"}
{"level":"warn","timestamp":"2023-06-23T12:29:33.589Z","caller":"authenticator/authenticator.go:86","msg":"Unable to fetch ibm-cloud-credentials","name":"secret-provider","secret-provider-type":"unmanaged-secret-provider","error":"secrets \"ibm-cloud-credentials\" is forbidden: User \"system:serviceaccount:openshift-cluster-csi-drivers:ibm-vpc-block-node-sa\" cannot get resource \"secrets\" in API group \"\" in the namespace \"openshift-cluster-csi-drivers\"","key-name":"ibm-credentials.env"}
{"level":"error","timestamp":"2023-06-23T12:29:33.591Z","caller":"authenticator/authenticator.go:89","msg":"Error initializing authenticator","name":"secret-provider","secret-provider-type":"unmanaged-secret-provider","error":"secrets \"storage-secret-store\" is forbidden: User \"system:serviceaccount:openshift-cluster-csi-drivers:ibm-vpc-block-node-sa\" cannot get resource \"secrets\" in API group \"\" in the namespace \"openshift-cluster-csi-drivers\""}
{"level":"error","timestamp":"2023-06-23T12:29:33.591Z","caller":"secret_provider/unmanaged_secret_provider.go:65","msg":"Error initializing unmanaged secret provider","name":"secret-provider","secret-provider-type":"unmanaged-secret-provider","error":"secrets \"storage-secret-store\" is forbidden: User \"system:serviceaccount:openshift-cluster-csi-drivers:ibm-vpc-block-node-sa\" cannot get resource \"secrets\" in API group \"\" in the namespace \"openshift-cluster-csi-drivers\""}
{"level":"error","timestamp":"2023-06-23T12:29:33.591Z","caller":"nodeupdater/utils.go:59","msg":"Error initializing secret provider","watcher-name":"vpc-node-label-updater","error":"secrets \"storage-secret-store\" is forbidden: User \"system:serviceaccount:openshift-cluster-csi-drivers:ibm-vpc-block-node-sa\" cannot get resource \"secrets\" in API group \"\" in the namespace \"openshift-cluster-csi-drivers\""}
{"level":"fatal","timestamp":"2023-06-23T12:29:33.591Z","caller":"cmd/main.go:98","msg":"Failed to read secret configuration","watcher-name":"vpc-node-label-updater","error":"secrets \"storage-secret-store\" is forbidden: User \"system:serviceaccount:openshift-cluster-csi-drivers:ibm-vpc-block-node-sa\" cannot get resource \"secrets\" in API group \"\" in the namespace \"openshift-cluster-csi-drivers\""}

The second patch in PR rework sidecar bindings to bind common ClusterRoles:
PR https://github.com/openshift/cluster-storage-operator/pull/379 published builiding blocks of sidecar ClusterRoles. Now, ibm-vpc-block csi driver operator may compose its sidecars ClusterRoles from those building blocks.
The patch also moves permissions for leases resource from ClusterRole to per-namespace Role (assets/rbac/lease_leader_election_role.yaml).

/test e2e-ibmcloud-csi

/label docs-approved
/label px-approved

/assign @jsafrane

/retest

/test e2e-ibmcloud-csi

/test e2e-ibmcloud-csi

/hold
For some reasons the operator doesn't see roles published by CSO:
level=error msg=Cluster operator storage Degraded is True with IBMVPCBlockCSIDriverOperatorCR_IBMBlockDriverStaticResourcesController_SyncError: IBMVPCBlockCSIDriverOperatorCRDegraded: IBMBlockDriverStaticResourcesControllerDegraded: "rbac/main_attacher_binding.yaml" (string): clusterroles.rbac.authorization.k8s.io "openshift-csi-main-attacher-role" not found

/test e2e-ibmcloud-csi

/test e2e-ibmcloud-csi

The cluster installation went smoothly for release image registry.build05.ci.openshift.org/ci-ln-k318ftk/release:latest built by cluster-bot on top of https://github.com/openshift/cluster-storage-operator/pull/386 and https://github.com/openshift/ibm-vpc-block-csi-driver-operator/pull/64
CVO published cluster roles 5 mins before operator started:
$ oc get clusterrole ibm-vpc-node-label-updater-role
NAME                              CREATED AT
ibm-vpc-node-label-updater-role   2023-07-18T21:22:21Z

$ oc get clusterrole openshift-csi-main-provisioner-role
NAME                                  CREATED AT
openshift-csi-main-provisioner-role   2023-07-18T21:14:57Z

No messages like clusterrole "openshift-csi-main-resizer-role" not found at all:
$ oc logs ibm-vpc-block-csi-driver-operator-68448b9485-ln6cx -n openshift-cluster-csi-drivers |grep main
I0718 21:22:20.202487       1 event.go:298] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-cluster-csi-drivers", Name:"ibm-vpc-block-csi-driver-operator", UID:"8ea66f2b-eb75-4207-ac6e-660aaa21f9a0", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ClusterRoleBindingCreated' Created ClusterRoleBinding.rbac.authorization.k8s.io/vpc-block-main-attacher-binding because it was missing
I0718 21:22:20.323280       1 event.go:298] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-cluster-csi-drivers", Name:"ibm-vpc-block-csi-driver-operator", UID:"8ea66f2b-eb75-4207-ac6e-660aaa21f9a0", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ClusterRoleBindingCreated' Created ClusterRoleBinding.rbac.authorization.k8s.io/vpc-block-main-provisioner-binding because it was missing
I0718 21:22:22.145844       1 event.go:298] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-cluster-csi-drivers", Name:"ibm-vpc-block-csi-driver-operator", UID:"8ea66f2b-eb75-4207-ac6e-660aaa21f9a0", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ClusterRoleBindingCreated' Created ClusterRoleBinding.rbac.authorization.k8s.io/vpc-block-main-resizer-binding because it was missing
I0718 21:22:23.314148       1 event.go:298] Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-cluster-csi-drivers", Name:"ibm-vpc-block-csi-driver-operator", UID:"8ea66f2b-eb75-4207-ac6e-660aaa21f9a0", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'ClusterRoleBindingCreated' Created ClusterRoleBinding.rbac.authorization.k8s.io/vpc-block-main-snapshotter-binding because it was missing

I'll unhold this PR as soon as https://github.com/openshift/cluster-storage-operator/pull/386 merged.

/unhold

/lgtm

/label qe-approved
Results added here: STOR-1363


Protobuf round trip unit test

Adds a unit test that does a round-trip serialization then deserialization of a grammar. This way we can cut out the server entirely, hopefully resulting in a more reliable test.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 57.74%. Comparing base (6e4ee06) to head (9c13134).
Report is 2 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #938      +/-   ##
==========================================
+ Coverage   55.54%   57.74%   +2.19%
==========================================
  Files          63       63
  Lines        4733     4771      +38
==========================================
+ Hits         2629     2755     +126
+ Misses       2104     2016      -88

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

I like the idea of testing the protobuf explicitly, and having a grammar equality operator is very useful! I think @mmoskal wants to eventually move to a purely JSON based serialization format, so would just be curious about his thoughts there before we double down too hard on the protobuf infrastructure

@Harsha-Nori even if we are planning on switching over to JSON, I don't think that adding a test for round-trip serialization/deserialization is walking too far down the protobuf rabbit hole. At the bare minimum, inclusion of this test will force us to make a conscious decision about these same behaviors in JSON land.
TLDR: approved from me but I'll wait on some more voices before merging :)

Sounds good to me! Thanks @nking-1 :)


sdl mac

added USE_GPM directives to use the gpm lib if available
replaced some headers to work for mac
added makefiles that will be used to compile on mac (they are literally the same as the other makefiles except for some compiler and linker flags)
added alternative middle mouse button: alt + right mouse button
fixed small bug in asciiid where clipping was too aggressive
replaced most of #ifdef __linux__ to #if defined(__linux__) || defined(__APPLE__)

The separate makefiles for mac are sub optimal, could be done better.
Sorry that the PR took so long.

doesn't this conflict with asciiid.cpp?

those were minor conflicts, but after 3 tries it's all good now

Hey, any chance you could fix current master branch so it runs on a mac?

superseded by another PR (already merged)