PageQualityScorerReadability only looks inside  tags when counting words in sentences

But sentences can be inside other block elements, such as

Any other tags you want me to add?

I think basically
 and  tags can be regarded as paragraphs, while an  is a single sentence.

I am not sure how to consider  tags as they might have  tags within them, it could lead to double counting the text. Do you think we should consider a page as an example to test it out?

You are right to consider that. Looking at one of our most popular pages, Minimum Wage:
kolzchut.org.il/he/שכר_מינימום
I see
 tags mainly where I insert them using templates, and then you can have nesting tags, either a
,
 or
.
A  tag can also hold any of those.
One example of nesting
s is fine:

עובד בחצי משרה זכאי לשכר מינימום בגובה  2,650 ש"ח (לפי החישוב: 1/2 × 5,300).

Another example of nesting
, including even a
:

שימו לב

1

2

And possibly even something like this:

גובה שכר המינימום לשעה בעקבות

bla bla bla

		bla bla black

1

2

It looks to me like for every paragraph-level tag you will have to go deep inside, right? When entering a
, e.g.
,  you will have to go to the next level, and see two new "paragraphs":

.text-title, which you count and are done
.text-body, which itself contains two sentences (because of the
 and one additional "paragraph" (the
).

What do you think?

Strangely I never received a notification for your reply.
I don't think it makes sense to make the code class-aware, instead, I would recommend that I consider an entire div as one paragraph if there are no ,  or  tags nested in it.
Additionally I would consider each  as a paragraph. Does that make sense?

Kindly try out this new algorithm and let me know if it works.
https://github.com/nischayn22/PageQuality/commit/6385d596c291257f7717cdc3bdf5537793465d38

This is better! I think you will have to special-case the
, as it's only paragraph-like if it has the relevant child nodes (
,
 or
) .
As it currently stands,  you treat it both as a sentence and as a paragraph at the same time, and get warning for both.

Something with the loops isn't working right - I'm getting multiples of the same sentence:

Emphasis lines now hit both emphasis_line_length and sentence_length audits

is fixed by https://github.com/nischayn22/PageQuality/commit/e94321b832109582409e6f3a33ec88e833894b84
Can you please share the link to the page
I think handling this would mess up the code, can we either just remove emphasis_line_length or live with two errors?

Great
I'm sending you a few test cases I built for the current audits - you can import them directly into a wiki. Test case 3 exhibits this issue of repeat warning for the same sentence.
This could be an issue if the emphasis line audit becomes more lenient than the sentence_length audit - you would get no error for emphasis_line_length but still get an error for sentence_length. Maybe we should have a standard "ignore-audit-[audit name]" data attribute for elements, and then adapt removeIgnoredElements() and getElementsByClassName() to match those? Anyway, let's leave it for later and finish everything else.

https://github.com/nischayn22/PageQuality/commit/cd83d1b972ac975f06154e59971d62351ada7dc2 fixes these.

Issue resolved.


Buffer / Sync / Delay / Latency maybe?

Thank you for your product, the work you put into it and the accompanying imagination.
I am looking for a solution to a simple problem: the monitor works with a delay, also the delay appears during the rendering of the frame in the player, something else ... in a word, I don’t know what the delay consists of, but Adrilight is so fast that I need a tool to adjust its output moment to the COM port.
What is the name of this tool? Buffer, sync, latency maybe etc.
P.S. The nature of this need differs from Fastled.delay() or just Delay() because they waste the result. Here we want full quality fast smooth output, but optionally buffered in milliseconds.

Is this by any chance a tv screen? Or behind an av receiver? All these
devices have usually a game mode which reduce their latency. You might want
to try that. Other than that, I cannot really help you. Sorry.

Thanks for advice anyway. This might be useful for someone.
It would be nice to have control in milliseconds of course. Adapt to different devices in the best way.
Found a latency setting (only for FTDI chips) for the COM port in the device manager, but this has no effect for me.
http://www.ftdichip.com/Support/Knowledgebase/index.html?an232b_04adjlatency.htm

I think you can store the led frame by get the color from SpotSet.Spots to make a frame buffer. After the delay(the frame counter matched) call GetOutputStream but instead of reading color Data from Spots(which is realtime), read from the buffer, then serialPort.write() to send data to LED. The buffer also need to be realtime updated


SBT console arrows up or down don't show history

In Android Studio 1.5.1, SBT plugin 1.7.0, sbt console move cursor up or down instead of move in history when press up or down arrows.

yeah, please fix this. This was working at some point. Is there a workaround?


is it possible: Istio-proxy cache pod ip although pod is deleted, and bring 503 for 3 hours.

Is this the right place to submit this?

[X] This is not a security vulnerability or a crashing bug
[X] This is not a question about how to use Istio

Bug Description
Istio-proxy cache pod ip although pod is deleted, and bring 503 for 3 hours.
This is recovery after another two pods of this service is deleted.
Is this an issue istio-proxy cache IP? or kubenetes endpoints had not be updated? Thanks.
Here is details:

In eks cluster, I upgraded all flux2 helm release on the same time, about 200 argo rollout run on the same time.
About 500 pods are created, on the same time after 10 mins, terminated 500 pods after rollout successfully
Two deleted pods IP:3000 (console service) continue to get requests from ingress gateway for 3 hours, of course "URX,UF" and 503 raise for all these requests.
Two new pods (console services) also receive requests from ingress gateway for 3 hours, all response is successful (200 or 304).
I deleted these two new pods, then another two pods of console service are created. Now, all is fine. -- I guess cache had been upgraded.

Which component should take the responsibility? Thanks.
Event
25/11/2024  14:21 Canary pipeline triggered  (UTC +8)
Two pods are created:
Pod 1:  console-655cfc7c6c-845qq   IP: <IP_ADDRESS>
Created: 25/11/2024  14:21:26.574   (UTC +8)
Deleted later: 25/11/2024 18:05:50.766  (UTC +8)
Pod 2:  console-655cfc7c6c-xqvz2   IP: <IP_ADDRESS>
Created:  25/11/2024  14:29:57.572  (UTC +8)
Deleted later: 25/11/2024 18:05:51.394	  (UTC +8)
Note that from   25/11/2024 14:31:21.922   Raise first API error.
You can find upstream_host is <IP_ADDRESS>. Note that this ip is old console pod IP, just be deleted on this time by agorollout.
{
   authority: console.xxx.com
   bytes_received: 0
   bytes_sent: 175
   connection_termination_details: null
   downstream_local_address: <IP_ADDRESS>:443
   downstream_remote_address: <IP_ADDRESS>:64063
   duration: 24149
   grpc_status_number: null
   method: GET
   oc_client_id: nil
   oc_sa: nil
   path: /assets/icon_service-54b1c35b.svg
   protocol: HTTP/1.1
   request_id: 10bcc9e4-9374-94bd-860d-7351318a583a
   requested_server_name: null
   response_code: 503
   response_code_details: upstream_reset_before_response_started{remote_connection_failure,delayed_connect_error:_113}
   response_flags: URX,UF
   route_name: ^/.*$
   start_time: 2024-11-25T06:30:56.848Z
   upstream_cluster: outbound|80||console.zone.svc.cluster.local
   upstream_host: <IP_ADDRESS>:3000
   upstream_local_address: null
   upstream_service_time: null
   upstream_transport_failure_reason: delayed_connect_error:_113
   user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
   x_b3_traceid: 4a5c010469ee704826987bfc7e041240
   x_forwarded_for: <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>,<IP_ADDRESS>
}

This error continue  more than 3 hours, until I deleted console pods again. (I guess cache is refreshed after I deleted console pods)
Analyze
Question 1: For the new pod generated on 14:00, does the API requests successfully?
Answer: All API response are successful, response code are 200, 304 (totally about 526 requests)
Question 2: Why the API raise 503 so?
The API goes to another two old pods which already be deleted.  <IP_ADDRESS> and <IP_ADDRESS>
Totally 546 requests.
Question 3: Why do you think  <IP_ADDRESS> and <IP_ADDRESS> are old console pod?s how you know it is deleted already?
From splunk metrics of cpu usage, we can know this.
For example: IP <IP_ADDRESS>, pod name is console-7bc956fddc-p98rw,
Started: 2024-11-22
Deleted: 2024-11-25 14:30 (UTC +8)
Question 4: Which component should take responsible -- access an ip which does not exists?
Should not Cilium

Cilium know when the pod started and deleted.
here is its log (UTC here.)

time="2024-11-25T06:30:53Z" level=info msg="Removed endpoint" containerID=31c74a3d74 datapathPolicyRevision=137 desiredPolicyRevision=137 endpointID=3707 identity=13391 ipv4=<IP_ADDRESS> ipv6="fe80::8aa:41ff:fea4:3e61" k8sPodName=zone/console-7bc956fddc-p98rw subsys=endpoint
time="2024-11-22T21:35:16Z" level=info msg="New endpoint" containerID=31c74a3d74 datapathPolicyRevision=0 desiredPolicyRevision=0 endpointID=3707 ipv4=<IP_ADDRESS> ipv6="fe80::8aa:41ff:fea4:3e61" k8sPodName=zone/console-7bc956fddc-p98rw subsys=endpoint

Not IstioD

Istiod already know it
Here is its log  (UTC here.)

   level: info
   msg: ADS: "<IP_ADDRESS>:39354" console-7bc956fddc-p98rw.zone-52063 terminated
   scope: delta
   time: 2024-11-25T06:30:53.047489Z

Kubeevent record  the pod is deleted.

Kubeevent already know it.
Here is its log:  (UTC here.)
{"apiVersion":"v1","count":1,"eventTime":null,"firstTimestamp":"2024-11-25T06:30:48Z","involvedObject":{"apiVersion":"apps/v1","kind":"ReplicaSet","name":"console-7bc956fddc","namespace":"zone","resourceVersion":"167117811","uid":"ac8fc472-57db-4f11-9f72-52965e5c1b56"},"kind":"Event","lastTimestamp":"2024-11-25T06:30:48Z","message":"Deleted pod: console-7bc956fddc-p98rw","metadata":{"creationTimestamp":"2024-11-25T06:30:48Z","name":"console-7bc956fddc.180b22592bcf03bf","namespace":"zone","resourceVersion":"167292040","uid":"4ecf641b-675d-4caa-a1a2-2fecbeb25ca8"},"reason":"SuccessfulDelete","reportingComponent":"replicaset-controller","reportingInstance":"","source":{"component":"replicaset-controller"},"type":"Normal"}

service endpoint or Istio inject proxy issue?
{
   authority: console-zone.xxx.io
   bytes_received: 0
   bytes_sent: 175
   connection_termination_details: null
   downstream_local_address: <IP_ADDRESS>:443
   downstream_remote_address: <IP_ADDRESS>:36963
   duration: 10005
   grpc_status_number: null
   method: GET
   oc_client_id: nil
   oc_sa: nil
   path: /
   protocol: HTTP/1.1
   request_id: 60f5504f-da53-9ede-8b57-0c41abc916d4
   requested_server_name: null
   response_code: 503
   response_code_details: upstream_reset_before_response_started{remote_connection_failure,delayed_connect_error:_111}
   response_flags: URX,UF
   route_name: ^/.*$
   start_time: 2024-11-25T10:03:57.862Z
   upstream_cluster: outbound|80||console.zone.svc.cluster.local
   upstream_host: <IP_ADDRESS>:3000
   upstream_local_address: null
   upstream_service_time: null
   upstream_transport_failure_reason: delayed_connect_error:_111
   user_agent: curl/8.2.1
   x_b3_traceid: 10dd1675e6b88710f67b53304e92526a
   x_forwarded_for: <IP_ADDRESS>,<IP_ADDRESS>
}

I deleted two pods (created on 25/11/2024  6:00 UTC ), all is fine after another two pods are created.
I guess during these two console pods deletion,  all service endpoints are refreshed! This is why it is recovered.

Which component had not upgrade the cache in this case?
Is it possible that ingressgateway pod not upgrade the pod IP from  25/11/2024  6:00 UTC?
Or kubenetes endpoints not upgraded cache from  25/11/2024  6:00 UTC?
Version
# kubectl  version
Client Version: v1.31.0
Kustomize Version: v5.4.2
Server Version: v1.30.6-eks-7f9249a

# Istio version
 1.22.4

Additional Information
No response

There seems to be 3 possibilities.

Istiod didn't get the event or didn't push it properly. You can check istioctl x internal-debug endpointShardz to see its internal endpoint state.
Envoy didn't get the event or didnt apply it properly. You can check with istioctl pc eds INGRESS_POD.
Kubernetes didn't update EndpointSlices. You can check with kubectl get endpointslices -oyaml. Note the logs you showed from Cilium and the ReplicaSet controller do not disprove this (though I think its not a likely cause anywas)

Thanks @howardjohn , I totally agree.
I cannot get more debug logs, since I did not realize the root reason on that time and deleted pods.
Later I will run with below to get all necessary info.
#!/bin/bash
## Refer to: https://github.com/istio/istio/issues/54081
cd /tmp
filename=$(date +"%Y%m%d%H%M%S")
mkdir debug$filename
cd debug$filename
pwd

# get endpointShardz
~/tmp/istio-1.22.4/bin/istioctl x internal-debug endpointShardz > temp_endpointShardz.json

# get endpointslices
kubectl get endpointslices -A > temp_endpointslice_simple.yaml
kubectl get endpointslices -A -oyaml > temp_endpointslices.yaml

# Get all pod names in the istio-system namespace
pods=$(kubectl get pods -n istio-system  -l gateway-type=ingress  -o jsonpath='{.items[*].metadata.name}')

# Loop through each pod and run the command
for pod in $pods; do
    echo "Processing pod: $pod"
    ~/tmp/istio-1.22.4/bin/istioctl pc eds  $pod -n istio-system  > temp_pc_eds_$pod.txt
done

echo "Done"

For istiod, should it not an issue since it print out such log
   level: info
   msg: ADS: "<IP_ADDRESS>:39354" console-7bc956fddc-p98rw.zone-52063 terminated
   scope: delta
   time: 2024-11-25T06:30:53.047489Z

That has nothing to do with the configuration distribution. That means the
shut down pod disconnected but that doesn't change any config
On Thu, Nov 28, 2024, 1:07 AM John Zheng @.***> wrote:

For istiod, should it not an issue since it print out such log?
level: info
msg: ADS: "<IP_ADDRESS>:39354" console-7bc956fddc-p98rw.zone-52063 terminated
scope: delta
time: 2024-11-25T06:30:53.047489Z
—
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/54081#issuecomment-2505602808, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXOGTRLARCRXFXUXJG32C3MO5AVCNFSM6AAAAABSSGIDV6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMBVGYYDEOBQHA
.
You are receiving this because you were mentioned.Message ID:
@.***>

ok, this means three possibility all exists, I cannot know this until next time issue raise again.
Somehow it is strange, since pods count is not much (about 500), the resources usage is low of ingressgateway related with console service.
Do you has some suggestions, to avoid such issue happen, in case it is an istio issue, thanks.
Here is general resource usage.
$ kubectl   top pods -n istio-system

kubectl  get hpa -n istio-system

kubectl  describe deploy -n istio-system istiod

kubectl  describe deploy -n istio-system istio-ingressgateway-web

Thanks. You are right.
The limit 2 is not enough.
From below, we can find the hpa is changing from 2 to 5.
The highest cpu arrive 5CPU.

Let me improve both request and limit
request is 2, limit is 5.
Thus limit very is very high. And HPA will not too frequency (it is based on request). I guess reduce pods creation/deletion may make istiod more stable.
How do you think? Thanks.

Closing this.  Still welcome your comments:
Whether improve request CPU, reduce pods creating/deleting is helpful for istioD stability or not


Allow pull of manifest without being located in registry

Paint Point? Please describe.
The silo latency can cause frustration when the image you just published takes a long time to show up. It would be useful to be able to supply a Docker image URL and get the manifest back.
Desired Solution
Instead of requiring images to be scanned within a registry before being able to import as job types, add an endpoint that will take a Docker URL and spit back the manifest.
Alternative / Workaround
Import via API

https://github.com/ngageoint/seed-silo/issues/32

I think this has already been addressed in another issue.
Sent from my iPhone

On Oct 10, 2019, at 7:51 AM, emimaesmith<EMAIL_ADDRESS>wrote:

Paint Point? Please describe.
The silo latency can cause frustration when the image you just published takes a long time to show up. It would be useful to be able to supply a Docker image URL and get the manifest back.
Desired Solution
Instead of requiring images to be scanned within a registry before being able to import as job types, add an endpoint that will take a Docker URL and spit back the manifest.
Alternative / Workaround
Import via API
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


pull vpa recommendations (?)

just an idea, but vpa-recommender could be used to generate some extra info (if the user is running it in their cluster) for pods... the output might be something like this
NODE                                          NAMESPACE       POD                                                      CPU REQUESTS    CPU LIMITS     CPU UTIL     CPU RECOMMENDATION      MEMORY REQUESTS   MEMORY LIMITS    MEMORY UTIL    MEMORY RECOMMENDATION
...
ip-12-34-567-89.eu-west-2.compute.internal   my-namespace     my-pod-7d95ccc554-2ltsq                                  600m (3%)       0m (0%)        4m (0%)      123m                    1024Mi (1%)       1024Mi (1%)      431Mi (0%)     789Mi

.. although come to think of it the user would have to have VPA objects for all their pod controllers, which is probably a significant minority 😆

That's an interesting idea, thanks for filing this issue! I'm not quite sure if/when I'll have time to implement something like that, but open to any contributions. As an alternative, I really like what @sudermanjr and the Fairwinds team have done with Goldilocks to help with VPAs.


Expand style guide

This is a...

[x] Feature Request
[ ] Bug Report

Problem:
The current documentation style guide is missing some key information.
The current style guide has some guidelines that I would like to revisit.
Proposed Solution:
Add more guidance in these areas:

Use of bold and italics
We say things like "Use bold for user-interface elements." But we don't go on to say "Don't use bold for
anything else." Should our style guide say things like "Don't us bold for general emphasis."? Or "Don't
use bold for anything except ..."? Same question for italics.
We say to use italics to introduce a term. I figure that meant to italicize the term when you introduce it,
but not every time it appears on the page. Do we need to spell this out? Here's an example of a new
topic that goes a little crazy with italics: Service Catalog.

Use of glossary terms
We don't have guidance about how to use glossary terms, but I think we should. Here's a new topic that I think goes overboard with underlined glossary terms: Service Catalog. I think we should have a guideline like this: Use a glossary tag on first mention of a term. Possibly use same glossary tag once for each major section of the document. But don't use the same glossary tag every time a term appears. While we're at it, should we say something like, "Don't capitalize a glossary term just because it's a glossary term". See Service Catalog for weird capitalization of glossary terms.
And another thing. We have this capitalization thing built in to some of our glossary definitions:

Service Catalog provides a way to list, provision, and bind with external {% glossary_tooltip text="Managed Services" term_id="managed-service" %} from {% glossary_tooltip text="Service Brokers" term_id="service-broker" %} without needing detailed knowledge about how those services are created or managed.

Use of quotes
Should our style guide provide guidance about using quotes? For example, do we want to say
something like "Don't use quotes to introduce a term. Use italics instead."? Or "Avoid air quotes."?

Word choice
Should our style guide have a section on word choice?
Examples:
Use "may" for permission and "might" for possibility.
Don't use "since" as a replacement for "because".

Crisp language
Our style guide already has a section called Use simple and direct language.
We give these examples:

Use "to" instead of "in order to".
Use "See" instead of "Please see".
Use "View the Pods" instead of "With this next command, we'll view the Pods".

Do we want to expand the list of examples of simple and direct language. For example:

Use "in" instead of "within".

Capitalization of Node
The style guide says to use camel casing for Kubernetes API objects. And we don't try to distinguish between the generic and the specific. For example, we always use Pod, not pod, even if the we're talking generically about the Pods in a cluster. The idea is that it would get too complicated to try to distinguish between the generic and the specific. According to that guideline, we should always use  Node, not node ("io.k8s.api.core.v1.Node"). Is the current guideline what we want? Or should we revise the guideline to include generic use of things like nodes?

Revisit these areas:

Address the reader as "you"
Don't use "we"
Jargon and idioms
Latin phrases

Bring the style guide into alignment with itself.
Example: The copy is called a "fork" should be The copy is called a fork.
Page to Update:
https://kubernetes.io/docs/home/contribute/style-guide/

I see @abiogenesis-now's point about wanting emphasis. But it's all too common to wind up with too much bold on the page. And it loses its effectiveness in displaying names of GUI elements. Do we have any other options for emphasis?

I'm not sure what styling would be best, but I'm also okay with creating a special CSS class---having to write Text creates enough of a barrier for entry that it won't be overused (?)

Thanks everybody. Keep those comments coming. I've been looking over the new user journeys content. I see fairly consistent use of things that go against our style guide. So I think it's important for us to discuss this and come to agreement.
Here's just one example. The phrase "we'll show ...", goes against two of our current guidelines: Use present tense, and don't use "we".

To answer the question about options for emphasis: The style guide has a section on Callout Formatting.

Where was the “we’ll show” phrase? I was expecting I was probably the one that violated that style guideline, as I have a tendency to use it informally to build a sense of companionship with the reader. I totally get WHY we don’t want to use it, so I tried to not use it - that said, I didn’t spot it in a quick look. We may not have caught it on the updates/edits.

Here's a "we'll get".
https://kubernetes.io/docs/user-journeys/users/cluster-operator/intermediate/
Seems like I've spotted other cases of "we'll". Not sure it's worth hunting them all down right now.

Heh - it was me, I suspected it might be. I’ll take a pass re-reading that whole set and make the relevant updates to match our style guide. Thank you

/lifecycle frozen

/priority backlog
Is that OK?

@sftim I think the backlog is a good place for this--and @Bradamant3's recommendation of vale may be remarkably prescient.
https://errata-ai.github.io/vale/
https://github.com/apps/vale-linter

Sounds good to me!

https://github.com/kubernetes/website/issues/20862 and https://github.com/kubernetes/website/issues/23527 are relevant here.

/triage accepted

Should I work on this @sftim

Should I work on this

Anyone is welcome to work on this. It's useful work that helps other contributors be more effective, so help is appreciated!

/assign

/remove-lifecycle frozen
If it rots, it rots.


Auto detection of prevailing kind of variables

Fixes https://github.com/javascript-obfuscator/javascript-obfuscator/issues/376

Coverage increased (+0.2%) to 98.335% when pulling 7ecaa1dfdb27efa99703d93825fb2f6e881c47c1 on declaration-kind-analyzer into f3553096283f2dfbb083cb2dc2130edf60ee427c on master.

Anybody can test this branch on a large code (10+ loc) with const and let variables?


React: Masthead L1 - remove feature flag on the white background version - Prod QA testing

User Story

As a [user role below]:
developer using the ibm.com Library Masthead L1

I need to:
have a version of the pattern or component that has been tested for accessibility compliance as well as on multiple browsers and platforms

so that I can:
be confident that my ibm.com web site users will have a good experience

Additional information

Browser Stack link
Browser Standard
Browser versions to be tested:  Tier 1 browsers will be tested with defects created as Sev 1 or Sev 2.  Tier 2 browser defects will be created as Sev 3 defects.
Platforms to be tested, by priority:  1)  Desktop  2)  Mobile  3)  Tablet
Mobile & Tablet iOS versions: 13.1 and 13.3
Mobile & Tablet Android versions: 9.0 Pie and 8.1 Oreo
Browsers to be tested:  Desktop: Chrome, Firefox, Safari, Edge, Mobile: Chrome, Safari, Samsung Internet, UC Browser, Tablet: Safari, Chrome, Android
Accessibility Checklist
Creating a QA bug
See the Epic for the Design and Functional specs information
Dev issue (#4010)
The Support page can be used for Visual QA testing.  Sample Support test page
Current Functional specs Box link
** Once development is finished the updated code is available on the Canary URL for testing.**

Acceptance criteria

[ ] Accessibility testing is complete.  Component is compliant.
[ ] All browser versions are tested
[ ] All operating systems are tested
[ ] All devices are tested
[ ] Defects are recorded and retested when fixed

@Praveen-sr This is ready to test - Thanks!

Prod QS testing has started.

Prod QA testing is finished.  Accessibility testing is about 50% finished.

Accessibility testing is finished.


Make it possible to disconnect from Gmail integration

Problem
Right now users can only connect/reconnect to Gmail. Let's add a way for users to disconnect from the integration if they want to.

Solution
This will involve a few small tasks on both the frontend and backend:

Set up a DELETE /api/google/authorizations/:id endpoint (see the SlackController and MattermostController for examples of this: https://github.com/papercups-io/papercups/blob/master/lib/chat_api_web/controllers/slack_controller.ex#L137)
Add a button to the UI that calls this endpoint and refreshes the integrations page (see Slack and Mattermost for examples in the UI: https://github.com/papercups-io/papercups/blob/master/assets/src/components/integrations/IntegrationsTable.tsx#L81-L99)

Testing
Please write automated tests for the backend API :)
Questions, or need help getting started?
Feel free to ask below, or ping us on Slack :)
(You can also check out our CONTRIBUTING.md)

Thought I'd try this one out. I'm having trouble getting the connection step working locally. I have the Google API key and all that, I'm able to select my email and everything, but it never says Connected. It seems like Google would want to call an endpoint on my localhost to let it know that I authorized? How do I set that up?

ah yeah @a8t the google auth setup is a little annoying... you'd probably need to set up your own project and redirect url, did you do that already?

the easiest way to handle this in the meantime might just be to create a dummy record in the database with fake api keys etc

Yeah I set up my own project. I don't think I understand what the redirect url is for, gonna have to read up some docs... I'm guessing I will have to ngrok my local server?

gottem

had to jump back and forth through the front end code a bit to figure it out. would be good to have some docs for this. for posterity, redirect_uri = http://localhost:3000/integrations/google worked


Made Tholder more Idiot proof with tests. Dual inde signing tests

Codecov Report

Merging #346 (9e16c76) into development (1b83ac4) will increase coverage by 0.02%.
The diff coverage is 95.60%.

@@               Coverage Diff               @@
##           development     #346      +/-   ##
===============================================
+ Coverage        92.61%   92.63%   +0.02%
===============================================
  Files              116      116
  Lines            36215    36368     +153
===============================================
+ Hits             33540    33689     +149
- Misses            2675     2679       +4

Impacted Files
Coverage Δ

src/keri/help/helping.py
73.91% <ø> (ø)

src/keri/app/keeping.py
87.91% <77.77%> (+0.14%)
:arrow_up:

src/keri/core/coring.py
87.78% <90.00%> (-0.06%)
:arrow_down:

tests/core/test_coring.py
99.97% <96.77%> (+<0.01%)
:arrow_up:

tests/app/test_keeping.py
99.36% <98.18%> (-0.03%)
:arrow_down:

src/keri/app/habbing.py
84.59% <100.00%> (ø)

src/keri/kering.py
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Replace user.find with edit.find

We should definitely not implement user namespace actions we're Talon already have defined them on internal namespaces.
Fixes #1493

@auscompgeek We now have a platform specific implementation in their corresponding edit files. There only exists application specific overrides where they differ.


[DOCS] Edit guide.md with new feature

[ ] Take a tour of tool
[ ] Add/Update the feature information inside guide.md

I would like to work on this issue.

I would like to work on this issue.

Go ahead

@all-contributors please add @jakebolam for infrastructure, tests and code

@all-contributors please add @SGI-CAPP-AT2  for infrastructure, tests and code

@all-contributors please remove @jakebolam for infrastructure, tests and code

@all-contributors please add @SGI-CAPP-AT2  for infrastructure, tests and code

@ErebusXAbyss any updates

Yes sir, updating the feature information inside guide.md (adding multiple fonts section)

Closed as no reply from anyone


Simple solution to post notification on quit

Stops the stream on application termination/quit. This has the effect of posting a notification to both Growl & OS X that there has been a state change. This helps developers who are developing against Hermes, like me, to know if there is an application/play state change. If this isn't the best way to provide this notification, then I would love to work with someone to make such a notification occur when Hermes quits.

I created a simple Mac utility, I'm going to post it soon, can let you know when it is finished if interested.

Makes sense to me, thanks.


Is Preprocessor.cpp a reimplementation of B+E or what extra elements does it have?

Hi,
I have to admit, https://github.com/meelgroup/KCBox/blob/main/src/Preprocessor.cpp is super impressive. I'd like to know if it has elements that are not present in B+E related to equivalent literal replacement? It seems to have a similar set of techniques as B+E: gate-based variable removal, backbone computation, toplevel equivalent literal replacement etc. However, you mention about special (perhaps non-toplevel) equivalent literal replacement in particular in the README, so I'm curious. I thought the non-toplevel eqLit replacement is only done during the knowledge compilation phase?
Thanks,
Mate

Hi,
I have to admit, https://github.com/meelgroup/KCBox/blob/main/src/Preprocessor.cpp is super impressive. I'd like to know if it has elements that are not present in B+E related to equivalent literal replacement? It seems to have a similar set of techniques as B+E: gate-based variable removal, backbone computation, toplevel equivalent literal replacement etc. However, you mention about special (perhaps non-toplevel) equivalent literal replacement in particular in the README, so I'm curious. I thought the non-toplevel eqLit replacement is only done during the knowledge compilation phase?
Thanks,
Mate
Hi Mate,

PreLite reimplemented most of technologies used in pmc. I think some technologies are also used in B+E. Roughly speaking, there are no extra technologies.
Non-toplevel eqLit replacement is done in the https://github.com/meelgroup/KCBox/blob/main/src/Extensive_Inprocessor.cpp.

Thanks for the quick response! What is PMC? Can you give a link to the code and the paper if they exist?
Thanks,
Mate

This is the link to pmc: http://www.cril.univ-artois.fr/KC/pmc.html


Add timezone customization

Add support to use a different timezone without setting system default timezone.

Test added
Backwards compatibility maintained

I'm using this - and its working great.
But I noticed there was no support for adding timezones to the getNextRunDate() etc - so I've made those changes in my fork here if interested: https://github.com/lioannou/cron-expression

@lioannou Would you mind doing a proper PR for that?


pull request for e2e test at 01/20/2017 12:56:13

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


Display ping

Hello. If you play Chinese version of the game you can display your ping with "cl_showfps 1" command, however this feature is not available in Korean version of the game. Maybe you can check how Chinese version is displaying the ping and implement that to Korean version too.

Is this ping value cso2_ui.gfx not included?


Update move-environment-tenant.md

Learn Build status updates of commit 5b0b5be:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

power-platform/admin/move-environment-tenant.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit cc84a52:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

power-platform/admin/move-environment-tenant.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit e9259b0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

power-platform/admin/move-environment-tenant.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 9dc8807:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

power-platform/admin/move-environment-tenant.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


Investigate numerical issues in tests

triggered when I run
py.test -sx

Fixed, see fb274be. Problem was with eta in SGDUpdater having a bad default


FoulDecrypt stacks on iproxy starting

Windows 10, iproxy exists in the path. Commands like which and zip are available

Any traces in OUTPUT > Frida Extension?

Any traces in OUTPUT > Frida Extension?

[iproxy ssh] recv failed: connection reset
however there is a process iproxy in process manager

Thank you for reporting

still doesn't work
[iproxy ssh] recv failed: connection reset
[iproxy ssh] send failed: No error

increased the timeout
https://github.com/ChiChou/vscode-frida/commit/717fa6f989e911165354042500cf5575d927afe8#diff-3661c7de958e281100120f53f7416c2982f5081c251ae6a92d4bb7bc63a16ba6L33

now just [iproxy ssh] recv failed: connection reset

now just [iproxy ssh] recv failed: connection reset

That's strange...

I'm having the same problem. First it shows the first 2 lines and after a minute of so it show the other 2:
[iproxy ssh] recv failed: connection reset
[iproxy ssh] send failed: No error
[iproxy ssh] recv failed: connection reset
[iproxy ssh] recv failed: Unknown error

solved, it was an issues with my ssh configuration. Added a private key to the ssh-agent with command ssh-add. I guess it stacked because all the time ssh asked for the password to read private key

@Numenorean Woah that actually worked! Thank you!
For anyone on Windows these are the extra steps I noticed I had to do to complete the smooth SSH login:

Add the id_rsa.pub RSA key to the authorized_keys on the iPhone (do this via ssh, I suggest just plain WinSCP)
Start the "OpenSSH Authentication Agent" service on your PC [SO answer]
In cmd run ssh-agent (no output)
In cmd run ssh-add C:\path\to\your\key\id_rsa (output should be "Identity added")

@ChiChou Maybe the "connection reset" error should be modified to hint in this direction?

@ChiChou consider adding manual if people face this issue in future?


Adding "-e" param doesn't let you choose the tcpip device in case of multiple device attached

[FAQ]: https://github.com/Genymobile/scrcpy/blob/master/FAQ.md is mentioned that you can select the device but it doesn't quiet work if you have two or more devices connected to tcpip
[issues]: https://github.com/Genymobile/scrcpy/issues  not exact match found in the issues so I'll create a new one.
Environment

OS:  macOS.
Scrcpy version: 3.0
Installation method: brew
Device model: Any
Android version: 13 or any other version

Describe the bug
Try to connect to one of many tcpip devices attached and you'll get the following error and not able to connect to the desired device
morteza@computer adb_scripts % scrcpy -e
scrcpy 3.0 <https://github.com/Genymobile/scrcpy>
ERROR: Multiple (2) ADB devices over TCP/IP:
ERROR:     --> (tcpip)  <IP_ADDRESS>:1234             device  Volvo_XC40
ERROR:     --> (tcpip)  emulator-5556                   device  Volvo_GAS_Moose_Emulator
ERROR: Select a device via -s (--serial), -d (--select-usb) or -e (--select-tcpip)
ERROR: Server connection failed
morteza@computer adb_scripts % scrcpy -e <IP_ADDRESS>:1234
scrcpy 3.0 <https://github.com/Genymobile/scrcpy>
2024-12-04 11:05:17.319 scrcpy[64475:4011423] ERROR: Unexpected additional argument: <IP_ADDRESS>:1234
morteza@computer adb_scripts % scrcpy -e "<IP_ADDRESS>:1234"
scrcpy 3.0 <https://github.com/Genymobile/scrcpy>
2024-12-04 11:05:28.703 scrcpy[64528:4011897] ERROR: Unexpected additional argument: <IP_ADDRESS>:1234
morteza@computer adb_scripts % scrcpy --select-tcpip "<IP_ADDRESS>:1234"
scrcpy 3.0 <https://github.com/Genymobile/scrcpy>
2024-12-04 11:08:58.187 scrcpy[65300:4020097] ERROR: Unexpected additional argument: <IP_ADDRESS>:1234

-e is only for "the device connected over TCP/IP (if there is exactly one)".
If there are more devices, you need -s: https://github.com/Genymobile/scrcpy/blob/master/doc/connection.md#selection

Correct! Confused by tcpip. Thanks!


A question about the resizing operation

Thanks for your awesome work in Otter-HD! I have a question about the resizing operation in fuyu. Since fuyu-8b claims that the model can accept images with any resolution as the input, then why does the code first resize all the images into [1080, 1920]? Why not just keep the original size?
Maybe an explanation is to keep the length of input the same, but adding pad tokens after text tokens is also plausible. Could you help answer this question? Thanks in advance :)

Hi I was wondering the same question. After some digging on the FuyuImageProcessor I found this line in the resize method
https://github.com/huggingface/transformers/blob/1c31b7aa3bb4e7ef24c77596d2a76f45a770159f/src/transformers/models/fuyu/image_processing_fuyu.py#L299-L303C25
Correct me if I am wrong but I believe that the image is not resized unless it is larger than 1080x1920. Instead, it is padded to this dimensions. This means that say for an image (w, h) this is resized to 1080x1920 with padding values in each dimension. Then to handle variable sized images the processor tries to find the minimum integer that exceeds w (or h) and it is divisible by the patch size (30): w1 or (h1)
https://github.com/huggingface/transformers/blob/1c31b7aa3bb4e7ef24c77596d2a76f45a770159f/src/transformers/models/fuyu/image_processing_fuyu.py#L632C1-L644C65
Since the image has been padded to 1080x1920, it is safe to take w1 cols and h1 rows from the padded tensor.
However, this means that for all benchmarks that do not have images larger than 1080x1920 the performance of the model should be exactly the same in 1080x1920 and the "variable size" scenario


Circuit parameters can't be bound by Runtime Primitives

Describe the bug
Runtime Estimator fails when a complex circuit that is made of instructions created from other circuit is executed. The same circuit runs perfectly well on the reference primitives locally. The script below reproduces the problem. It may look artificial, but a lot of code has been removed to make the script shorter. I do believe the same problem will occur with Sampler.
Steps to reproduce
Add a TOKEN definition to the script and run it.
import numpy as np
from qiskit import QuantumCircuit
from qiskit.circuit import ParameterVector
from qiskit.primitives import Estimator
from qiskit.quantum_info import Pauli
from qiskit_ibm_runtime import QiskitRuntimeService, Session, Estimator as RuntimeEstimator

def cloud_execute(qc):
    observable = Pauli("Z" * qc.num_qubits)

    service = QiskitRuntimeService(channel="ibm_quantum", token=TOKEN)
    backend_name = "ibmq_qasm_simulator"
    with Session(service=service, backend=backend_name) as session:
        estimator = RuntimeEstimator(session=session)
        result = estimator.run(qc, observable, np.random.random(qc.num_parameters)).result()
        print(result)

def local_execute(qc):
    observable = Pauli("Z" * qc.num_qubits)
    estimator = Estimator()
    result = estimator.run(qc, observable, np.random.random(qc.num_parameters)).result()
    print(result)

def create_layer(num_qubits, params):
    qc = QuantumCircuit(num_qubits, name="L")

    param_index = 0
    for qubit1 in range(0, num_qubits - 1, 2):
        qubit2 = qubit1 + 1
        unit_params = params[param_index: param_index + 1]
        add_unit(qc, qubit1, qubit2, unit_params)
        param_index += 1

    return qc.to_instruction()

def add_unit(qc: QuantumCircuit, qubit1, qubit2, params):
    u = QuantumCircuit(2, name="U")
    u.rz(params[0], 0)

    qc.compose(u.to_instruction(), [qubit1, qubit2], inplace=True)

num_qubits = 4
qc = QuantumCircuit(num_qubits)

num_params = 2
params = ParameterVector("u", num_params)
layer = create_layer(num_qubits, params)

qc.compose(layer, list(range(num_qubits)), inplace=True)

print(qc.decompose(reps=2))

local_execute(qc)
cloud_execute(qc)

Exception is raised qiskit.circuit.exceptions.CircuitError: \'Cannot bind parameters (u[1]) not present in the circuit.\'
Full log:
Traceback (most recent call last):
  File "... __decompose_bug.py", line 61, in <module>
    cloud_execute(qc)
  File "... __decompose_bug.py", line 18, in cloud_execute
    result = estimator.run(qc, observable, np.random.random(qc.num_parameters)).result()
  File "... lib/python3.8/site-packages/qiskit_ibm_runtime/runtime_job.py", line 226, in result
    raise RuntimeJobFailureError(
qiskit_ibm_runtime.exceptions.RuntimeJobFailureError: 'Unable to retrieve job result. Job cgv6cgj3sd207kpt424g has failed:\nTraceback (most recent call last):\n2023-04-18T09:43:44.024738294Z   File "/provider/server/main.py", line 90, in execute_program\n2023-04-18T09:43:44.024757792Z     starter.execute()\n2023-04-18T09:43:44.024778195Z   File "/provider/programruntime/program_starter_wrapper.py", line 97, in execute\n2023-04-18T09:43:44.024797212Z     raise ex\n2023-04-18T09:43:44.024815487Z   File "/provider/programruntime/program_starter_wrapper.py", line 84, in execute\n2023-04-18T09:43:44.024832275Z     final_result = self.main(backend, self.messenger, **self.user_params)\n2023-04-18T09:43:44.024849954Z   File "/code/program.py", line 1464, in main\n2023-04-18T09:43:44.024867719Z     result = estimator.run(\n2023-04-18T09:43:44.024885527Z   File "/code/program.py", line 270, in run\n2023-04-18T09:43:44.024904502Z     bound_circuits = [\n2023-04-18T09:43:44.024923817Z   File "/code/program.py", line 273, in <listcomp>\n2023-04-18T09:43:44.024940911Z     else transpiled_circuits[circuit_index].bind_parameters(p)\n2023-04-18T09:43:44.024959235Z   File "/opt/app-root/lib64/python3.9/site-packages/qiskit/circuit/quantumcircuit.py", line 2735, in bind_parameters\n2023-04-18T09:43:44.024977216Z     return self.assign_parameters(values)\n2023-04-18T09:43:44.024993295Z   File "/opt/app-root/lib64/python3.9/site-packages/qiskit/circuit/quantumcircuit.py", line 2687, in assign_parameters\n2023-04-18T09:43:44.025027333Z     raise CircuitError(\n2023-04-18T09:43:44.025043583Z qiskit.circuit.exceptions.CircuitError: \'Cannot bind parameters (u[1]) not present in the circuit.\'\n2023-04-18T09:43:44.071122732Z /pod-data/ CLOSE_WRITE,CLOSE terminated\n2023-04-18T09:43:44.077314378Z Termination marker file found. Kill process (7).\n'

Expected behavior
No exception is thrown
Suggested solutions
There's a workaround. Replace  cloud_execute(qc) with cloud_execute(qc.decompose(reps=3) and the problem is solved, but it is inconvenient.
Additional Information

qiskit-ibm-runtime version: 0.9.3
Python version: 3.8
Operating system: MacOS

This seems to be an issue with the qpy serialization/deserialization.
This example  constructs the same qc provided above in the original description of the issue, prints it, then serializes and deserializes it, and prints it again. The original circuit qc differs from new circuit new_qc: in the new circuit the param u[1] does not appear.
from qiskit import QuantumCircuit
from qiskit.circuit import ParameterVector

def create_layer(num_qubits, params):
    qc = QuantumCircuit(num_qubits, name="L")

    param_index = 0
    for qubit1 in range(0, num_qubits - 1, 2):
        qubit2 = qubit1 + 1
        unit_params = params[param_index: param_index + 1]
        add_unit(qc, qubit1, qubit2, unit_params)
        param_index += 1

    return qc.to_instruction()

def add_unit(qc: QuantumCircuit, qubit1, qubit2, params):
    u = QuantumCircuit(2, name="U")
    u.rz(params[0], 0)

    qc.compose(u.to_instruction(), [qubit1, qubit2], inplace=True)

num_qubits = 4
qc = QuantumCircuit(num_qubits)

num_params = 2
params = ParameterVector("u", num_params)
layer = create_layer(num_qubits, params)

qc.compose(layer, list(range(num_qubits)), inplace=True)

# print original circuit
print(qc.decompose(reps=2))

# convert to qpy and back to QuantumCircuit
from qiskit import qpy
with open('temp.qpy', 'wb') as fd:
    qpy.dump(qc, fd)

with open('temp.qpy', 'rb') as fd:
    new_qc = qpy.load(fd)[0]

# print new circuit
print(new_qc.decompose(reps=2))

Output:
qc:
     ┌──────────┐
q_0: ┤ Rz(u[0]) ├
     └──────────┘
q_1: ────────────
     ┌──────────┐
q_2: ┤ Rz(u[1]) ├
     └──────────┘
q_3: ────────────

new_qc:

     ┌──────────┐
q_0: ┤ Rz(u[0]) ├
     └──────────┘
q_1: ────────────
     ┌──────────┐
q_2: ┤ Rz(u[0]) ├
     └──────────┘
q_3: ────────────

Hi. @mberna In order to update the client, is there any news on that issue?

Hi, this case actually hits a limitation of qpy that has an easy fix on the user side.
qpy relies on the operation name for serializing/deserializing. This allows it to only store the definition for custom gates once and then re-use it for all instances of the gate. In this examples, the add_unit method is hard-coding the name "U" on two units that are actually different, as one is parametrized with u[0], and the other one with u[1]. There is no way for qpy to currently check if the first "U" is different to the second "U", and this is why they are both deserialized as the first "definition" of "U". Making sure both layers have different names (u = QuantumCircuit(2, name=f"U_{id}")) will lead to the correct serialization:
from qiskit import QuantumCircuit
from qiskit.circuit import ParameterVector

def create_layer(num_qubits, params):
    qc = QuantumCircuit(num_qubits, name="L")

    param_index = 0
    for qubit1 in range(0, num_qubits - 1, 2):
        qubit2 = qubit1 + 1
        unit_params = params[param_index: param_index + 1]
        add_unit(qc, qubit1, qubit2, unit_params, qubit1)
        param_index += 1

    return qc.to_instruction()

def add_unit(qc: QuantumCircuit, qubit1, qubit2, params, id):
    u = QuantumCircuit(2, name=f"U_{id}")
    u.rz(params[0], 0)

    qc.compose(u.to_instruction(), [qubit1, qubit2], inplace=True)

num_qubits = 4
qc = QuantumCircuit(num_qubits)

num_params = 2
params = ParameterVector("u", num_params)
layer = create_layer(num_qubits, params)

qc.compose(layer, list(range(num_qubits)), inplace=True)

# print original circuit
print(qc.decompose(reps=2))

# convert to qpy and back to QuantumCircuit
from qiskit import qpy
with open('temp.qpy', 'wb') as fd:
    qpy.dump(qc, fd)

with open('temp.qpy', 'rb') as fd:
    new_qc = qpy.load(fd)[0]

# print new circuit
print(new_qc.decompose(reps=2))

Output:
qc:
     ┌──────────┐
q_0: ┤ Rz(u[0]) ├
     └──────────┘
q_1: ────────────
     ┌──────────┐
q_2: ┤ Rz(u[1]) ├
     └──────────┘
q_3: ────────────

qc2:
     ┌──────────┐
q_0: ┤ Rz(u[0]) ├
     └──────────┘
q_1: ────────────
     ┌──────────┐
q_2: ┤ Rz(u[1]) ├
     └──────────┘
q_3: ────────────

Do you think this could be enough to help the client? (and @adekusar-drl)

@ElePT thanks for the update, I overcame the issue long time ago, honestly. I realized that it is better not use nested circuits/instructions and so on despite the fact they are very handy for complex circuits. But the issue is really annoying. The proposed solution is okay, but nevertheless the issue to be fixed. It is very common to debug on reference primitives and then move to cloud. And then fixing the issue becomes crucial when you queued for ages and then you get a nasty error in your circuit.

Closing since this is a duplicate of https://github.com/Qiskit/qiskit/issues/8941


Add Dutch translation

Finally finished the first version of the Dutch translation for the Builder plugin.
Pfew, that was a lot of work ;-)
Also included a commit which fixes the following in the English translation file:

Code formatting (missing commas after last array element; newline at the end of file)
Replaced quotes of some strings
Removed duplicate 'no_description' key

Thanks


Assets added, but font is not downloaded

Hello!
I don't have any error in the console, the map-icons.css is well loaded with the @font-face (.js loaded too), but the font is not loaded. So I have the markers, but nothing on it...
Can you think of something?
Thanks a lot! No public access to this problematic page, but should be possible soon)

Make sure your font paths are correct and that the CSS is being loaded. Maybe check the network tab in your browser's developer tools to see if the fonts are being requested.
Sorry I can't provide any further information without context, maybe providing a CodePen or something.

CSS is loaded, and path seems good to me :
On a CSS file like that https://local.villa-bali.com/css/front_map-icons_3.css, I have :
@font-face {
	font-family: 'map-icons';
	src:url('../vendor/map-icons/dist/fonts/map-icons.eot');
	src:url('../vendor/map-icons/dist/fonts/map-icons.eot#iefix') format('embedded-opentype'),
		url('../vendor/map-icons/dist/fonts/map-icons.ttf') format('truetype'),
		url('../vendor/map-icons/dist/fonts/map-icons.woff') format('woff'),
		url('../vendor/map-icons/dist/fonts/map-icons.svg#map-icons') format('svg');
	font-weight: normal;
	font-style: normal;
}

And https://local.villa-bali.com/css/../vendor/map-icons/dist/fonts/map-icons.eot is working for me.
But there is no request in the network tab. So problem might come from somewhere else. I was not able to easily create a CodePen, so I'll wait to put my page in an accessible location...

I'm having the exact same problem. Based on the network inspector in Chrome, the css file loads successfully, however no requests are made for any of the fonts. I'm fairly confident I have the paths and everything setup correctly. But regardless, the fact that the fonts aren't even being requested (no requests for these fonts are shown in the chrome network inspector), seems very strange.
The css seems fine to me, which is why I don't understand why no requests are being made for the fonts.

Good to learn I'm not alone, @fvargas. Do you have a link to give to show the problem or is it in local environment?

I'm testing this locally. But the symptoms seem fairly black and white. I'm using the unmodified css file from the dist/ directory.
As I mentioned in the edit to the SO question, I was able to make the browser request (successfully) map-icons.ttf by using the font in an arbitrary css block. Why both Chrome and Firefox choose to load only map-icons.ttf, I don't know. Unfortunately, even then, the icons do not show up on the markers I'm using in Google maps.
I'm going to further look into this latter case to see if I can get it working at all. But both cases, particularly the original case, are still rather troubling.

@lologhi are you by chance using modernizr?

@fvargas yes I am ! Why ?

@lologhi Haha, nevermind. I was thinking there might be an interaction with modernizr going on.
Fortunately, after digging into this for far too much time, I've figured out why this wasn't working. I was able to get the font to load and appear when using it through css. But it still wouldn't work for the map icons. After poking around for a while, I concluded the map_icon_label property must not be getting utilized. Strange. After exploring the source js code, I realized that I needed to be instantiating a new Marker rather than a new google.maps.Marker. Marker is an object created by the package as a wrapper around google.maps.Marker. Changing my code to use Marker fixed it for me.
Ironically enough, when I first looked at the sample given in the docs, I noticed it was using just Marker without the google.maps, and I just brushed it off. :tired_face:
I hope this fixes your problem too. Also make sure that map-icons executes after google maps has loaded and that your script to create the markers executes after map-icons has been executed.

Closing issue. @fvargas has provided better marker creation documentation.

Great ! Finally working for me too with new Marker !


response_model_by_alias not respected by swagger schema

Hello! I have schema/view like this:

@router.get(
    "/my-route/",
    response_model=OutSchema,
    response_model_by_alias=False,
)
async def test_route(name: str):
    return await MyModel.query.where(
        and_(
            MyModel.name == name,
        )
    ).gino.first_or_404()

class OutSchema(BaseModel):
    id: int
    type: str
    object_id: str = Field(..., alias='name')

    class Config:
        orm_mode = True

Description
When i accessing route above i receive response like {'id': 123, 'type': 'smth', 'object_id': 'some_name'} which is correct
but when i open swagger i see in example response
{
  "id": 0,
  "type": "string",
  "name": "string" # it should be object_id here instead of name
}

It look like fastapi issue because of response_model_by_alias usage
Environment

OS: Linux
FastAPI Version: 0.55.1
Python version: 3.7

Yes, that's expected, it's explained here: https://fastapi.tiangolo.com/tutorial/response-model/?h=+response_model_by_alias#response_model_include-and-response_model_exclude
That's why response_model_include, response_model_exclude, and response_model_by_alias are discouraged.

Although this is true for response_model_include and response_model_exclude,  there is no easy way to fix the response_model_by_alias. Could you take a look at this PR that fixes it?
Given Pydantic's design (for example, look at this issue), there is no way to support private (with sunder) attributes without using an alias - and this makes it hard to use such models with sunder attributes in a JSON Schema.

For my case the trick with the second model described here: https://fastapi.tiangolo.com/tutorial/response-model/?h=+response_model_by_alias#response_model_include-and-response_model_exclude  worked fine.
You can just define a proxy-model with the similar fields, just without the aliases. These models can be used as response model as well as post input schema in FastAPI. Then, you can easily convert the original model by .dict(by_alias=False) into the proxy-model and vice versa by the pydantic configuration attribute allow_population_by_field_name = True.
Full example:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from typing import Optional

import uvicorn

app = FastAPI()

class Bar(BaseModel):
    bar_bar_1: str = Field(
        None, alias="bar:bar-1"
    )
    bar_bar_2: Optional[str] = Field(
        None, alias="bar:bar-2"
    )

    class Config:
        allow_population_by_field_name = True

# Model for OpenAPI schema representation
class BarProxy(BaseModel):
    bar_bar_1: str
    bar_bar_2: Optional[str]

class Foo(BaseModel):
    foo_bar_1: str = Field(
        None, alias="foo:bar-1"
    )
    foo_bar_2: Optional[str] = Field(
        None, alias="foo:bar-2"
    )
    foo_bar_3: Optional[Bar] = Field(
        None, alias="foo:bar-3"
    )

    class Config:
        allow_population_by_field_name = True

# Model for OpenAPI schema representation
class FooProxy(BaseModel):
    foo_bar_1: str
    foo_bar_2: Optional[str]
    foo_bar_3: Optional[BarProxy]

# Data consists of full model inclusively field aliases
data = [
    Foo(foo_bar_1="field1", foo_bar_2="field2", foo_bar_3=Bar(bar_bar_1="bar_field1", bar_bar_2="bar_field2")),
]

@app.get(
    "/foo/{obj_id}",
    response_model=FooProxy,
)
def get_foo(obj_id: int):
    if obj_id > len(data) - 1 or obj_id < 0:
        raise HTTPException(status_code=404, detail="Item not found")
    print("Representation of full model:")
    print(data[obj_id].dict(by_alias=True))
    # With .dict(by_alias=False) FastAPI easily convert the Foo-Model into the FooProxy-Model
    return data[obj_id].dict(by_alias=False)

@app.post(
    "/foo",
    status_code=201,
    response_model=FooProxy,
)
def create_foo(obj: FooProxy):
    data.append(Foo(**obj.dict()))
    print("Representation of full model:")
    print(data[-1].dict(by_alias=True))
    # With .dict(by_alias=False) FastAPI easily convert the Foo-Model into the FooProxy-Model
    return data[-1].dict(by_alias=False)

In swagger the model will be represented like this:
{
  "foo_bar_1": "string",
  "foo_bar_2": "string",
  "foo_bar_3": {
    "bar_bar_1": "string",
    "bar_bar_2": "string"
  }
}

To me, it is inconsistent if OpenAPI docs shows a different field name that the one expected. Having to create a proxy class to workaround this seems a bit cumbersome. I need to use an alias because I have a field named metadata, which are forbidden in  SQL Alchemy models. It would be nice to have at least an option to disable or enable alias in openapi docs, for consistency sake.

Another possible workaround is mapping the values using a root_validator before pydantic does any validation.
class Foo(BaseModel):
    foo_bar_1: int
    foo_bar_2: str

    @root_validator(pre=True)
    def alias_values(cls, values):
        '''
        Assigning alias in order for swagger docs to display correct schema keys
        '''
        values['foo_bar_1'] = values.pop("incoming_key_foo_bar_1")
        values['foo_bar_2'] = values.pop("incoming_key_foo_bar_2")
        return values

Using this allows getting rid of the concept of alias in the schema so FastAPI will simply show the fields you have defined for your schema. This will also maintain the functionality of reading data in by one name and returning it using another. Notice the root_validator has pre = True to ensure this value mapping happens before pydantic does any validation.
Now there is no need to set response_model_by_alias to False in the endpoint.
Another way to improve this is to include a default for the pop value so that rather than a key error coming from values if an incoming key does not exist, you can let pydantic validation find the inconsistency.

To me, it is inconsistent if OpenAPI docs shows a different field name that the one expected. Having to create a proxy class to workaround this seems a bit cumbersome. I need to use an alias because I have a field named metadata, which are forbidden in SQL Alchemy models. It would be nice to have at least an option to disable or enable alias in openapi docs, for consistency sake.

@oji try this:
class MyModel(BaseModel):
    my_attribute: str = Field(..., alias="myAttribute")

    class Config:
        allow_population_by_field_name = True

        # The schema is generated by default using aliases as keys.
        # We want the snake_case name output.
        # Modified from:
        # - https://pydantic-docs.helpmanual.io/usage/schema/#schema-customization
        @staticmethod
        def schema_extra(schema: Dict[str, Any], model: Type['Person']) -> None:
            snake_case = {}

            for field in model.__fields__.values():
                k = field.name
                v = schema['properties'][field.alias]
                snake_case.update({k: v})

            schema.update({'properties': snake_case})

To create a proxy automatically as proposed by lugoll you can use this simple method.
def without_alias(model, *, recursively=False):
    """Create a fantom model without alias.

    This is used to not exposed internal aliases to fasapi.

    Example :

    _model.py_
    ```python
    MyModelWithoutAliases = without_alias(MyModel, recursively=True)
    ```
    _router.py_
    ```python
    from model import MyModelWithoutAliases as MyModel
    @router.post(..., response_model=MyModel)
    ```
    """
    monkey_model = deepcopy(model)
    for name, field in monkey_model.__fields__.items():
        if field.alias != name:
            field.alias = name
            field.field_info.alias = name
            field.field_info.alias_priority = 1

        if issubclass(field.type_, APIModel) and recursively:
            field.type_ = without_alias(field.type_, recursively)

    return monkey_model


Facilitate null-coalescing the return values of TusRequest::extractMeta()

Is your feature request related to a problem? Please describe.
I find myself needing to fall back to alternative values in case a metadata field is not set. I also believe null is a more appropriate value to describe unset fields, and this behaviour would be coherent with that of Request::extractAllMetadata().
Describe the solution you'd like
I would like the Request::extractMeta() method to return null for unset fields, so that I may use the null-coalesce (??) operator to clearly and concisely implement my desired behaviour. This would be as simple as changing the final return ''; statement to return null; in the method definition, though I do not know whether this would affect the behaviour of other tus-php code.
Describe alternatives you've considered
I can just test for an empty string with conditionals. This becomes verbose and less clear in the case of multiple fallbacks, but it does work perfectly.
Additional context
That's pretty much it.

I don'tthink it's a good idea to change the mixed return type. The current return type is string and is consistent to what it needs to be.
@Poldovico Like you have mentioned, solution would be to nullify empty string and create a utility wrapper method for it which we can implement in application level. The change necessarily do not need to be done on tus-php itself. Thus, I am closing this issue as we already have solution that do not require change in tus-php itself.


Update to the wind downscaling, with unused functionality taken out e…

….g. remove rdmi and height cube.
Reference issue if exists
Testing:

[ ] Ran tests and they passed OK
[ ] Added new tests for the new feature(s)

CLA

[ ] If a new developer, signed up to CLA

I have started work on the wind downscaling, removing the unused functionality e.g. RDMI and taking out the separate heights cube. I have run the tests and:

The CLI test are all fine (/)
Two unit tests don't work, although I haven't changed them (I have done some deleting), so I'm not sure what has happened? (x)

I'm not sure what has happened but thought I would put up the PR so that somebody else could look at it and check that I haven't done anything strange?
The PR is here: https://github.com/metoppv/improver/pull/380

This is proving to be very complex because the unit tests do not test individual methods, and consequently changes to code are breaking unit tests in non-obvious ways.


Add FlagRemoveQuery (strips entire query part)

I won't be at all offended if you think this flag has no place in purell, but it's one I would use almost exclusively :- )
context: I'm dealing with lots of news article URLs, and the unique part of the URL is almost always a slug, and the query used only for tracking (eg ?from=rssfeed ). Stripping the query is always my first step when normalizing URLs for comparison.
eg (apologies for dailymail link):
http://www.dailymail.co.uk/news/article-3656841/It-s-Democrats-end-25-hour-sit-Congress-gun-control-walk-cheering-crowd-without-vote-demanded.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490
Just one of the many frustrations when trying to decide if two URLs are referring to the same article - there are loads more. Newspaper sites can commit some real atrocities when dealing with URLs!

Hello Ben,
Thanks for the PR, it looks good! I'm unsure at the moment if it feels right to have this in the package. One thing is the helper flags FlagsAllGreedy and FlagsAllNonGreedy, those were poorly thought-out and kind of prevent adding new flags in a sensible way (either you break the old behaviour of those flags by or-ing the new one, or you break the semantics by leaving it out - it's not "All" anymore).
Also, I would think a common need may be to remove some well-known, referral-type query strings, while keeping others? The new flag wouldn't help in that case. I'm thinking out loud here, but maybe all that's missing is a FlagCustom or a new NormalizeURLFunc(*url.URL, NormalizationFlags, func(*url.URL)) that calls the func after applying the provided normalization flags, so you can do what you want with the *url.URL before returning the normalized string.
I'll think about that a bit more, and feel free let me know what you think about this.
Martin

Instead of custom flags or a NormalizeURLFunc() with a callback, how about a nice simple:
func Normalize(u *url.URL, f NormalizationFlags) *url.URL
Which returns a *url.URL, upon which the caller can perform their own further custom munging (with a nearby note explaining why they should use urlesc.Escape() rather than the net/url equivalent :- )
I know you're keen to keep the API minimal, so I think that'd be the most orthogonal way to handle custom munging...

I get what you mean about FlagsAllGreedy and FlagsAllNonGreedy. Actually, I think that's as good a reason as any to reject incompatible flags. A bit arbitrary, maybe, but hey.
Regarding FlagRemoveQuery vs query filtering blacklist/whitelist... I can only really talk about my own use case, which is dealing with news and blog sites in bulk:
Yes, there are some well-known referral-type strings (like the google "utm_*" query tags), but sooooo many sites define their own ones too, which screw up my url-comparison code.
Maybe 1 in 100 sites have article URLs with significant query data (eg: http://example.com?article_id=12345), but for the the other 99, the query part is always extraneous and needs to be stripped.
So, for my needs, I always start from the assumption that the query part of the URL is just noise.

Instead of custom flags or a NormalizeURLFunc() with a callback, how about a nice simple:
func Normalize(u *url.URL, f NormalizationFlags) *url.URL

Very true, in fact the existing NormalizeURL func already works for this, even though it returns the normalized string. The *url.URL value is modified in-place, so the URL passed in is normalized after the call, and you can then remove the query string (u.RawQuery = "") if you want to ignore that part. The urlesc package was temporary and that call is not required since Go1.5 (see #14).
So with that said, given that the proposed flag is a one-liner that can be done quite easily with the current API, I think I'll pass on the PR.
Thanks,
Martin


Feature: API file upload and download

Description
AWS S3 upload file and download file working correctly
Changes

brought all AWS S3 variables to class level
file upload and download working

during file upload the file name is changed to file_name_uuid4_hex.extension

using UUID4 hex to not have dashes in the file name and have it be a bit cleaner

wrote a test for both file upload and download
changing the _BUCKET_DIRECTORY_NAME of cript.API within conftest.py to be sure tests only go into tests/ directory of the AWS S3 storage

Tests

tests pass locally but since it needs a token it will not pass on GitHub actions
testing file upload to our AWS S3 bucket is problematic because  every time we run this test we are uploading a new file to AWS S3, this could increase our storage costs

I have already ran it a bunch of times during testing and development

Known Issues

the file URLs are available forever after they have been uploaded

this could be a security risk, but the I am not fully sure if it is or how
we could add a time limit to the URL, but I think that would break our software because later users won't be able to get their files via that same URL

code to set a time limit on the uploaded file URL:

 url_expire_time = datetime.timedelta(minutes=5)  # URL will expire in 5 minutes
s3_file_url = self._s3_client.generate_presigned_url(
    'get_object',
    Params={'Bucket': self._BUCKET_NAME, 'Key': object_name},
    ExpiresIn=url_expire_time.total_seconds()
)

test_upload_and_download_file is a bit complex and hard to understand, but I have docstrings and comments
not sure how good the UX is for file upload and download yet

the UX feels a bit weird to me because the user would have to pass in the directory, file name, and extension to the function which the user might be less intuitive or the user might not know the file extension

further error handling for both upload and download might be needed
The biggest issue with this that I see is that the AWS S3 bucket sends back bytes and does not tell me the file extension.

We could try to find the file extension from the file node extension attribute and add it onto there, but not sure about it currently

Notes

I was thinking of encapsulating the _s3_client client in the upload_file method because it is only used there, but all other variables for s3 are already at class level and I get the feeling that if we want to do anything else with the s3 client then we have to move it to the class level again. Switching from class level to method would be very easy and I can do it if we think that is a better way to go.

Thoughts
I think file upload and download should be at API level
I think a workflow like this might be easier:

We could create an API endpoint like https://mycriptapp.org/files/upload.
Then, we could send an HTTP POST request to that URL with the file.
The API would store the file wherever it wants and respond back with the URL of the stored file.
The file URL from the API can then be used as a file node source attribute to generate a giant JSON with only web file sources and no local file sources anymore.

This approach offers several advantages:

The API has control over the files, ensuring consistent conventions.
It promotes uniformity, so the frontend doesn't save files like _file_123456_789012.pdf, and the SDK doesn't save it like 123456_file_name_789012_.pdf.
It allows for easy switching of storage providers (e.g., from AWS to GCP) without impacting clients interacting with the API.

I think this might be a good idea as it simplifies the workflow, promotes consistency, and allows for flexibility in the future.

@InnocentBug let me get your thoughts on this when you get a chacne

This is a very manual approach to file up and download.
I have explained before, that the File node class should handle this automatically for the user. Otherwise we are running the risk, that users forget to upload their files, or upload wrong files etc.
It is relatively straight forward to have all of this handle automatically. So we should do that. (Even the old SDK did that.)
Also, the API class is getting out of control. In version 2, it needs refactoring. It should hold a number of sub class elements that implement and do most of the work. Like a DB schema class, a file up/down load class. etc.

I agree and I am planning on doing that for the File node this is only the initial PR so that we have the API client side done, and then we can use the API client methods within the File node for upload and download

agreed, for V2 we need a to start looking into refactoring strategies as API client class is getting big

SDK needs a token from API that has access to AWS S3, otherwise every API test will fail because during initialization when it tries to create an S3 client a fake token will throw an error.
This is blocked until we can get this resolved so we can continue working on the tests to pass within CI

This test needs a valid API token to work correctly with the cloud storage provider

too many conflicts, making a new PR: https://github.com/C-Accel-CRIPT/Python-SDK/pull/156


Leakage in Modsecurity WAF 3.0.1 with Nginx

Hi Team ,
We are facing a very strange and serious issue with modsecurity on 🆖INX.
We have a 4 core machine with 4096 worker_connections for nginx .
1⃣ When any IP is blocked via modsecurity, it takes some time (which is few minutes to half an hour sometimes) to reflect properly ; that is even when an IP is blocked some of the requests from that blocked IP still go through , and the number of requests that go through decrease with respect to the time, when the block request for that IP was sent to modsecurity.
Is this because of the fact that synchronisation is needed between the worker_connections ? Even after blocking the IP in Modsecurity, some worker-connections serve the requests as they don't know yet that the IP has been blocked

If this is the case how do we instantly synchronise all the worker_connections, so that each of the worker_connection instantly knows that the requests from that particular blocked IP are to be dropped.

2⃣ Even after blocking and synchronisation among all the worker connections(after some hours of blocking when every worker-connection knows that IP was blocked), some of the requests still manage to go through (which is highly strange) . If the number of requests from attacker IP come at a higher rate e.g. 20,000 req / minute, and given the fact that some of the requests from that blocked IP  go through, it causes lots of problems. At times when the footfall on the application server is already very high , this along with the number of leaked requests (even if 1% ) causes immense slowdown.
So can Modsecurity WAF leak requests from an IP even after that IP was blocked ? ☹
_We are using In memory storage for collections _
OS Version : CentOS Linux 7
Nginx Version : 1.16.1
Modsecurity version : 3.03

Hi @nasirbas1,
The memory storage is independent by worker. There is no sync. In order for you to get a sync you have to enable the LMDB collections.

@zimmerle Why is it that even after hours of blocking , some requests from blocked IP still manage to go through?


Modify the backbone network

Hi!
I have a question for you!
Recently I changed PENet's backbone network ENet to attention-unet, and I only used part of Kitti's dataset. I felt that the training was a little slow, and then I modified the learning rate when training the backbone network so that the network could learn faster.

It's ok when I train ENet. (Blue is the training set, yellow is the validation set)
But when I used the trained backbone network for the second stage of training, the network experienced severe overfitting. I wonder if this has something to do with the learning rate?

We can see that cspn++ is trained very poorly. The validation set error is large.
What is the reason for this?
Below is the learning rate when I train ENet.

The above is the result after training ENet
I am very much looking forward to your reply!

It seems reasonable. Since the stage2 training should be regarded as an parametric initialization step of the CSPN++ module, it is a normal case that error metrics after stage2 are no better than those after stage1. You could refer to previous issues for detailed discussion: issue 30 28 25.

Thank you very much for your prompt answer!
I will seriously consider your proposal!

But I independently verified the second stage in the code you posted, and the validation and training sets fit just fine. Why is this?

Could it be because I have too little data? I only downloaded the dataset for some of the dates instead of all dates, and now I'm adding the datasets of other dates to train again.


Add method to GameEvent to return tracker for key

something like
kills_tracker = game_event.get_tracker('kills)
if kills_tracker:
    print(kills_tracker['value'])

return None if tracker does not exist

Issue was moved to https://github.com/johnsturgeon/apex-legends-tracker/issues/7

Decided that this issue should indeed be supported by this API


cmd/link: linker should be able to remove init functions with no side-effects

In this example:
testlinker/a/a.go
package a

type DieDieType struct {
	Test map[string]int
}

var DieDieVar = &DieDieType{
	Test: make(map[string]int),
}

var Constant = 5

testlinker/main.go
package main

import (
	"fmt"
	"testlinker/a"
)

func main() {
	fmt.Println(a.Constant)
}

the linker is unable to remove references to DieDieType because it is referenced by a.init. But this init function, generated by the compiler to initialize DieDieValue, is actually useless, because it has no side-effects and only initializes a global variable that is then unreferenced. So the init function could be dropped, and this in turn would remove references to the types.
This is distilled from the analysis in #19523, where just referencing a constant in a package causes a very large growth of binary size because of a deep chain of dependencies which are not used by the program. I haven't fully tracked everything so I can't swear that all init functions are side-effects-free in that case, but I think there's a reasonable chance that it would fix that instance.

I'm not opposed to this idea but I think it's going to be difficult to implement effectively as a linker function.  Compiler generated init functions are going to make function calls.  For the linker to eliminate a compiler generated init function, it will have to traverse the entire transitive set of function calls made by the init function to make sure that they do not change any referenced global variables.  In this case we are going to see function calls to runtime.makemapandruntime.newobject`, which do of course change referenced global variables, so the linker is going to have to have a list of functions that should be ignored during this transitive walk.
I think a simpler approach might be for the compiler to generate separate init functions for each global variable that requires one, and to annotate the init function in some way to say that this init function does not do anything important other than initialize a global variable.  Then it would be easy for the linker to not count references from that function when deciding whether a global variable is used, and to discard the init function along with the global variable if it is not used.
That approach would of course not be as general, but I think it would be simpler to implement, more likely to be correct, and I suspect it would catch many of the cases where variables can actually be eliminated.

I tried to keep the example minimal for the sake of focusing the problem, but I have a few more complex cases in mind, for the sake of analyzing what the correct solution would be. For instance, what about this:
package main

import (
	"os"
	"math"
	"fmt"
	"strconv"
)

var Data1 float64
var Data2 float64

func init() {
	value := os.Getenv("TEST")
	val, _ := strconv.ParseFloat(value, 64)
	Data1 = math.Sqrt(val)
}

func init() {
	Data2 = Data1 + 1.0
}

func init() {
	Data1 = Data2 + 1.0
}

In this case, if Data1 and Data2 are not referenced, the init functions could probably be dropped as well. This is why I used the term "not having side effects": maybe it's not the right term, and I don't know if this property already exists in the compiler for other uses (e.g.: dead code elimination).
For instance, I assume that the Go language specification tells us that, instead, those init functions couldn't be dropped if the printed something or possibly panicked (with no way for the compiler to prove that the panic is never triggered).

In that example, your init function calls os.Getenv which calls syscall.Getenv which calls envOnce.Do(copyenv) where copyenv changes the package variable syscall.env.  The chances that the linker can safely and reliably conclude that the init function can be eliminated seem minimal to me.

See #9355 #7599 #10081 for some light reading related to this issue.
They are mostly about replacing compiler-generated init functions with link-time operations so that unused variables can be dropped.  I don't think we're going to be able to handle user-written init functions any time soon.

Another instance of this issue is flag definitions for programs that don't use flags. See for instance https://go-review.googlesource.com/c/go/+/49251 where code was changed into non-idiomatic way to avoid unused dependencies.

Is this a duplicate of #14840?


NIFI-2092 Fixing unit tests which try to clean up directories before …

…stopping the FlowController that has locks opened.

@JPercivall the magic words did not seem to work so please close this PR. Also, please issue another PR for 1.0 since this one has merge conflicts.

Got it, thanks @olegz


Not able to receive the Master results in email

I have the below work flow: Its working perfect but sending email without any Maester result.
I am following the below url to get the same result , but no luck. Anyone help me?
https://maester.dev/docs/monitoring/email

name: Maester Daily Tests
on:
push:
branches: ["main"]
Run once a day at morning
schedule:
- cron: "0 13 * * *"
Allows to run this workflow manually from the Actions tab
workflow_dispatch:
env:
MAIL_USER_EMAIL<EMAIL_ADDRESS>MAIL_USER_PASSWORD:
MAIL_FROM:  Maester
MAIL_TO<EMAIL_ADDRESS>permissions:
id-token: write
contents: read
checks: write
jobs:
run-maester-tests:
name: Run Maester Tests
runs-on: ubuntu-latest
steps:
- name: Run Maester action
uses: maester365/maester@main
with:
client_id:
tenant_id:
include_public_tests: true
step_summary: true
artifact_upload: true
# Send email after tests run
- name: Send email notification
  uses: dawidd6/action-send-mail@v3
  with:
    server_address: smtp.office365.com  # Change this to your SMTP server address
    server_port: 587  # SMTP server port
    username: ${{ env.MAIL_USER_EMAIL }}  # Email username
    password: ${{ env.MAIL_USER_PASSWORD }}  # Email password (use GitHub secrets if possible)
    to: ${{ env.MAIL_TO }}  # Recipient email
    from: ${{ env.MAIL_FROM }}  # Sender email
    subject: "Maester Test Results"
    body: "The Maester tests have completed. Please check the results."
    secure: false

You don't need to use a separate send-mail.
The Maester GitHub action can send the mail directly. Just add these two parameters.

mail_recipients<EMAIL_ADDRESS>mail_userid:

See https://github.com/maester365/maester/blob/338df9a7dac05df2dd4f0fe7b07994f6ce907bff/action.yml#L17

Hello Merill,
I reviewed maester/action.yml
For me its Main.yml and I tried to add the below, but showing bad parameter in main.yml
mail_recipients<EMAIL_ADDRESS>mail_userid:

I am missing something to understand. I tried GitHub notification but it is only sending the URL not the result with Total, failed and passed info to email.

Good to hear @JSBBITADMIN ! 😉


Revert "[backport] Use directional derivative"

Reverts chainer/chainer#3534

jenkins test this please

jenkins test this please

LGTM


fix(chat): fix the duplication of own items (Issue #1137)

Description:
Fix the duplication of own items
Issues:

#1137

PRs:

https://github.com/epam/ai-dial-chat/pull/1160

Checklist:

[x] the pull request name complies with Conventional Commits
[x] the pull request name starts with fix(<scope>):, feat(<scope>):, feature(<scope>):, chore(<scope>):, hotfix(<scope>): or e2e(<scope>):. If contains breaking changes then the pull request name must start with fix(<scope>)!:, feat(<scope>)!:, feature(<scope>)!:, chore(<scope>)!:, hotfix(<scope>)!: or e2e(<scope>)!: where <scope> is name of affected project: chat, chat-e2e, overlay, shared, sandbox-overlay, etc.
[x] the pull request name ends with (Issue #<TICKET_ID>) (comma-separated list of issues)
[x] I confirm that do not share any confidential information like API keys or any other secrets and private URLs

/deploy-review


Tighten up render_game_over()

dict.get() with default value
enumerate()
List comprehension

This one doesn't look simpler than before, even if it is shorter. Other commits were fine, thanks for your input.


swshop accepts uppercase names for items

The "swshop" plugin for Milo will allow shop owners to enter names with uppercase letters in the "Name" field of an item's shop tab. Krist does not process uppercase letters in names correctly.

Thanks for finding this bug - I have fixed the issue - when updating, do a System Update + update the swhop package (you might want to do update all in packages).


Automated cherry pick of #639: Support Plugin Arguments

Cherry pick of #639 on release-0.4.
#639: Support Plugin Arguments

/lgtm
/approve


Unhandled Exception: type 'Null' is not a subtype of type 'PdfPageRenderCancellationTokenPdfium' in type cast

This error appears, when I try to use render() method of PdfPage.

0.4.8 that contains a fix for the issue is just relased.


SwiftPM: Support dependency entries with a branch name

See individual commits.
Fixes #8167.

Converted to draft as it needs some further re-work.

I've split out two commits to https://github.com/oss-review-toolkit/ort/pull/8169.


Production usage

Are you using this in any of your projects right now? I'm just getting started on Seneca and we use RabbitMQ heavily in production right now. I would love to use this vs standing up and maintaining Kafka and wondering if you have an suggestions or recommendations on setup.

Hi @sberryman,
I intended to use this lib in production but didn't get a chance to at the time and now most of my work is in Go (I continue maintain this lib). The only way I can address your concerns is to invite you to look at the source code of this library as it's quite small and see if you agree with the implementation. It's just a wrapper around amqlib. I'd say having tests might boost confidence in using the lib but I don't have any time planned for writing them soon (contributions welcome :)).
As for RabbitMQ vs Kafka vs whatever: The only recommendation I can give is to worry more about understanding the features and failure modes for the tools you pick (RabbitMQ or Kafka) and to put in adequate monitoring and failure mitigation/recovery for the services you use (dropped messages, network partitions, etc...).
I hope I've answered your question. I'll leave it to you to close this issue unless you have more questions

Sorry, forgot to respond back yesterday. Thanks for the response and I have certainly looked at your source. I preferred your implementation over seneca-rabbitmq-transport.