Running fig command in debug mode generates error

This is probably a question for the repo that uses this command, but maybe you can help, since I'm totally new to fig.
I'm running the command
fig generate demo
as per the instructions on this Readme.
I've installed the dependencies and this command executes.  However, I'm trying to run this in debug mode in order to step through the code.
When I run
fig generate -d demo
I get an error:
AssertionError: not all files exist
Is the execution and error handling in debug mode different from the regular mode?

It sounds like debug mode is probably not what you want. Using debug mode in omni-fig (i.e. including -d) automatically prepends the debug.yml as config file - which may override various settings and even the actual entry point (i.e. script that gets run). In this case, I'm guessing the contents of config/debug.yml sets a different script name (i.e. _meta.script_name) than generate, and thus you end up somewhere totally different.
If you need to use a debugger to step through the code at runtime, then you would have run the command through an IDE (e.g. Pycharm). FYI what the fig command actually does is call omnifig.entry(). So you can also turn that into any regular python script and use any standard debugger.
However, your confusion is quite warranted, so I'll change the name of the debug mode in a future version (since debug mode isn't related to a debugger or stepping through the code at all).

Thanks for the insights.  So the repo actually has a main.py file with omnifig.entry().
When I run it in debug mode in VSCode, it then steps into this __init__.py:
__version__ = '0.1'

from .graphs import create_graph
from .queries import create_query
from .verbal import load_story
from . import formatting
from . import verbal
from . import util
from . import generator

After which I get an error:
Exception has occurred: GeneralProject.NoScriptError exception: no description   File "C:\Users\Bob\Documents\Programming\cladder\main.py", line 4, in <module>     fig.entry() omnifig.organization.workspaces.GeneralProject.NoScriptError:

Hi @felixludos , can you give a pointer on my question above.  Thanks so much!

I'm guessing you're not specifying any (registered) script to run. If you want to hardcode the main.py to run a specific script (e.g. generate) then you need to specify it like so: omnifig.entry("generate") (see docs). Otherwise, you have to specify what script in the command (e.g. python main.py generate) (see docs). Also, don't forget to specify any config files in the command (e.g. demo).

Thanks!  So I think it would be something like this:
python main.py generate <config_files>
The problem is that the Cladder repo has lots of different config files, so which one would I specify?:
https://github.com/causalNLP/cladder/tree/main/config
Btw, I had opened an issue on CLadder since I can't run the example there (I just saw that you're one of the 2 contributors:
https://github.com/causalNLP/cladder/issues/3

It depends on what do you want to do? If it's just run the demo, then you only need to specify the demo config (just like when running fig generate demo).
PS: as for CLadder, I'm currently working on an extension, including CLadderV2, which includes quite a bit of refactoring - so maintaining the old stuff has unfortunately become a lower priority - sorry.

I want to be able to to run main.py.  Currently, even without debug mode, it errors out.
Exception has occurred: GeneralProject.NoScriptError
exception: no description
  File "C:\Users\Bob\cladder\main.py", line 4, in <module>
    fig.entry()
omnifig.organization.workspaces.GeneralProject.NoScriptError:

I want to go through what the CLadder paper did and it's impossible to currently reproduce the work.

main.py doesn't do anything on its own - it's just an entry point to run any of the scripts. For example, to run the generation demo using main.py you can use the command python main.py generate demo (which is equivalent to fig generate demo, as discussed in the omnifig docs linked above).

Great, that helps a lot, thanks!


Envoy DaemonSet fails probes on IPv6 single-stack cluster

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
On a true IPv6 only cluster (nodes and pods only have IPv6 addresses, except for the standard <IP_ADDRESS> loopback, no IPv4 routes), the readiness/liveness/startup probes for the Envoy DaemonSet fail with connection refused as the kubelet does not fall back to IPv6 after failing to probe over IPv4.
Changing the readiness probes to specifically query ::1 works, as I'm sure the reverse would if encountering a similar issue on an IPv4 only cluster.
I'm not entirely sure how k8s does DNS lookups for probes (I presume it's just part of the net library) but given there's no need for the readiness probe to resolve localhost to do its probe, this should probably be set to the localhost IP directly. Happy to raise a PR for that.
Cilium Version
v1.15.1
Kernel Version
Linux i-0f0d5a7c8c89a74cb 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 22.04.3 LTS
Kubernetes Version
v1.29.2
Regression
No response
Sysdump
No response
Relevant log output
Events:
  Type     Reason     Age                     From     Message
  ----     ------     ----                    ----     -------
  Warning  BackOff    7m50s (x58 over 34m)    kubelet  Back-off restarting failed container cilium-envoy in pod cilium-envoy-jfxr5_kube-system(42b62c37-9f54-442b-84d4-4d70e03b8e98)
  Warning  Unhealthy  2m49s (x1306 over 62m)  kubelet  Startup probe failed: Get "http://localhost:9878/healthz": dial tcp <IP_ADDRESS>:9878: connect: connection refused

Anything else?
No response
Cilium Users Document

[ ] Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

[X] I agree to follow this project's Code of Conduct

@iandrewt thanks for the bug report. Are you able to provide a sysdump?

Thanks for reporting this issue, the host value in all probes is hard coded as localhost in the helm chart. Can you help to test out the below change?
https://github.com/cilium/cilium/pull/30994


Reduce the number of instances to 1

Codecov Report

Merging #91 (4ede35f) into main (f788b4a) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #91   +/-   ##
=======================================
  Coverage   95.39%   95.39%
=======================================
  Files           5        5
  Lines         282      282
=======================================
  Hits          269      269
  Misses         13       13

Continue to review full report at Codecov.

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

IBM Cloud toolchain: Delivery Pipeline deployed products to prod, including commit 0a6241fe1cdcb2385f8c5569bed3f9be7e078edd


[BUG] Receipt Delete Failing

Describe the bug
Deleting a receipt fails due to bad request
To Reproduce
from datetime import datetime, timedelta

from monzo.handlers.filesystem import FileSystem
from monzo.authentication import Authentication
from monzo.endpoints.receipt import Receipt, ReceiptItem

TWO_DAYS_AGO = datetime.now() - timedelta(days=2)

handler = FileSystem(file='monzo.json')

credentials = handler.fetch()

auth = Authentication(
    client_id=credentials['client_id'],
    client_secret=credentials['client_secret'],
    redirect_url='',
    access_token=credentials['access_token'],
    access_token_expiry=credentials['expiry'],
    refresh_token=credentials['refresh_token'],
)

TRANSACTION_ID = 'REPLACE WITH TRANSACTION ID'
EXTERNAL_ID = 'ABC12345'

auth.register_callback_handler(credentials)

item = ReceiptItem(
    description='Test item',
    amount=1410,
    currency='GBP',
)

receipt = Receipt(
    auth=auth,
    transaction_id=TRANSACTION_ID,
    external_id=EXTERNAL_ID,
    transaction_total=1410,
    transaction_currency='GBP',
    items=[item],
)

Receipt.create(auth=auth, receipt=receipt)

receipt.delete(receipt=receipt)

Expected behavior
Receipt to be deleted
Environment (please complete the following information):

Package Version = 0.0.1
Python version = 3.7

Additional context
N/A

Closing as repeat of  #38


It would be more usable to merge the android and windows version in trunk.

Original issue 108 created by humeafo on 2012-07-28T02:16:19.000Z:
RT.

We are currently sticking with platforms that we can test on travis-ci.


ENH: 'buildah pull' Do a pull without creating a container.

This is a feature request/enhancement discussion. The below is a IRC chat that I'd with @pixdrift the other night. I wanted to capture the thoughts so we could discuss further here.
Description
<pixdrift> another one I also wanted to ask, was has 'buildah pull' been discussed?
<pixdrift> When re-tagging, buildah pull <image>:<tag> && buildah push <image>:<newtag> comes up a bit
<pixdrift> at the moment, the only real option is 'buildah from' which creates the temp container, so the work around has been `buildah rm $(buildah from <image>:<tag>)'
<pixdrift> where buildah pull could essentially do the same as 'buildah from' without the temp container

@pixdrift please feel free to add further details or correct me if any of this is incorrect.
My first thought was to do a new param like --nocontainer for buildah from that causes the image to just be pulled and saved locally and not create the container.  Haven't delved into it any further than that.

I would prefer buildah pull since it is much easier to discover and matches up with buildah push.

OKD, I'll make it so.  ;^)

Closing as #889 addresses this.


CSS Folder Structure

Thinking of giving the CSS folder structure a slight tweak in v3.0 too. layout and components folder are too similar - when does something become a layout? How big does it have to be?
Maybe take some inspo from http://sassdirector.com/examples/index.html

Have you considered switching to css modules? With that you can also remove the css folder completely and keep the css and component in the same directory, which makes a lot of sense.

@hampusohlsson I have, and while I felt it didn't make sense to include them with the original application structure, if we decide to adopt the ducks approach that's definitely something I'm going to reconsider! (see #27)

There are a number of approaches, but in general it feels like having local css on a component level is getting more and more traction and support in the community (either by css modules or js styles using something like Radium). It makes maintainability a lot easier in large apps, as it removes the need for remembering difficult naming conventions and rule pollution of the global css scope.

css modules (and generally styles near the appropriate js code) make total sense.
css folders are dead :)

@hampusohlsson @MoOx agreed, read the latest in #27 and check out the v3.0.0 branch, it has a new structure with CSS modules! :+1:

I'm still unsure where to put global CSS rules though, how do you handle that?

I avoid global css at all cost. That said, there is still some (even just the css-layout default https://github.com/facebook/css-layout#default-values) that I generally put in the "App" component (the top level component).

How do you handle variables, hacks (e.g. clearfix),...?
On the v3.0.0 branch I currently have a folder called global  that holds those files, but I'm not happy with that solution.

I have very few variables that I send directly using https://github.com/postcss/postcss-custom-properties#variables.
I avoid hacks as class and prefer to use them locally (these days we can use flexbox ;))
You should also check out css modules compose feature (I don't use it, but you might find it helpful).

For stuff like visually-hidden, maybe you should make a component ;)

@MoOx ah the component idea actually isn't bad, I like it.  Will think about a nice, beginner friendly implementation!

Yeah, global styles is one thing that kept me from using css modules because I thought it wasn't really possible. I'd like to use the same button styles, form input field styling, etc throughout the application. But the compose functionality seems really interesting! See also http://glenmaddern.com/articles/css-modules

@jessedobbelaere the a react app, you should just create some Button & Input components ;)


Server tsconfig import aliases

Environment

Operating System: Linux
Node Version:     v18.16.0
Nuxt Version:     3.5.3
Nitro Version:    2.4.1
Package Manager<EMAIL_ADDRESS>Builder:          vite
User Config:      devtools, modules, css, eslint
Runtime Modules<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Build Modules:    -

Reproduction
You can check a minimal reproduction in this repository: https://github.com/mitjans/nuxt-server-types
Typescript complains that it cannot find the module "~/types/database".

Describe the bug
It seems that with the new tsconfig file introduced in version 3.5.2, global nuxt import aliases do not work inside the server folder. Autocompletion suggests importing relative paths.
Also, other Nuxt modules imports stopped working. See @nuxtjs/supabase issue 191.

This depends on https://github.com/unjs/nitro/pull/1266.

As I understand it, this is to allow other modules to customize path aliases, right?
What about nuxt path aliases ("~" and other)? Or will this also be solved?

That PR will allow Nuxt to add necessary configuration, including aliases (via paths). (Though Nitro should also do that for any aliases it is aware of - feel free to open a PR if I don't get to it first.)

I also observe this error before 3.5, I normally saw the import paths through @ ~ and others correctly, but now it stopped working, I had to manually set the includes path


♻ tests refactoring

Fix #40

Note: CI passed since it ran before the latest version of protostar, if we merge as it is the CI will fail after merge since protostar version hasn't been upgraded in this branch. I suggest to merge as it is then fix the CI with the next PR (fixing the protostar version).


test(quantic): testing the analytics new event protocol with RGA components

SFINT-5399
In this PR:

Adapted the Cypress e2e test for the RGA feature to testing for analytics sent with the new protocol, now the test spec tests for both case: the case when send legacy analytics and the case where we sent next analytics, following this structure:

Created next-analytics-expectations.ts which contains the functions to verify the events sent with new event protocol.

In a nutshell that's what I'm doing in this PR:
wherever we were testing analytics like this:

Expect.logDislikeGeneratedAnswer(streamId);

now we are testing it like this:
if (analyticsMode === "next") {
  NextAnalyticsExpectations.emitQnaDislikeEvent(
    {
      feedback: {
        liked: false,
      },
      answer: {
        id: streamId,
        type: "CRGA",
      },
    },
    exampleTrackingId
  );
} else {
  Expect.logDislikeGeneratedAnswer(streamId);
}

PS:
This is just the first PR to introduce these changes that will make the E2E Quantic tests test for the analytics sent with the event protocol, similar PRs will follow soon for other features.

Very nice PR description, good work! 👌
Small question will the legacy events be supported indefinitely as deprecated or legacy code or is there a plan to remove these once the migration is fully completed?

Thank you!
No they will not be supported indefinitely, we will only support them during the transaction to the v3.
Once the v3 is here we will be able to clean our tests by removing anything related to legacy analytics.


Automating Version Skew

Fixes: https://github.com/kubernetes/website/issues/14307
Automates version skew documents based on shortcodes.

Note: This will break when there's a major version release (ie: k8s v2.x). If / when this happens, the shortcode can be modified or the pages can be converted back to static temporarily.

Preview:
https://deploy-preview-20369--kubernetes-io-master-staging.netlify.app/docs/setup/release/version-skew-policy/
https://deploy-preview-20369--kubernetes-io-master-staging.netlify.app/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy

Related: https://github.com/kubernetes/website/issues/12329

/lgtm


New Feature: Dashboard: Add DNS top permitted domains - pihole Object

New Feature: Can you please add "DNS Top Permitted Domains" object?
Currently, the DNS top domains object includes all domains and there is no way of only showing the permitted domains.

actually you can easily apply a filter or KQL filter to achieve this. You can also safe that filter for later use.
You can do this in the dashboard layer for all visualizations (see screenshot) or you can do this by editing the permitted domain viz and apply the filter there.
Its a little bit exaggerated in my oppionen to create a whole new visualization for just this change.
However you can even do this easily. Just click the edit button of the permitted domain viz, add your filter and safe it under a new name. This way you are able to easily add the new one to the dashboard
Hope that helps :)

while I thought a little more about this it would maybe be better to just replace the viz to just show the permitted domain. I guess it would be more logical to have a viz showing the blocked domains and another showing only permitted ones.
Thanks for pointing me in this direction

while I thought a little more about this it would maybe be better to just replace the viz to just show the permitted domain. I guess it would be more logical to have a viz showing the blocked domains and another showing only permitted ones.
For now you can edit the viz yourself in the above mentioned way
Thanks for pointing me in this direction

Is what I was thinking as well....same concept on the pihole's native dashboard
I'll play around with the viz for now....

"not blocked_domain :*"  filter does not work. All it does is remove the piholed results, but the top Domains results still show all the results. On the Dashboard and Viz views...

Not here. If I apply this filter every event containing a blocked_domain field is excluded on every viz and the top blocked domains vis is empty.
Do I misunderstand you ?
BTW the Screenshot above also shows 0 pinholed Domains in the diagram as we excluded the blocked field -> you only see domains which were accepted and not blocked

At first I also thought it worked great, until I started verifying the data.
With the filter on, the piholed data is removed, but the top domain still included piholed URL's
I then built a new dashboard with the 2 viz's . Screenshots attached... as you can see the piholed result in top domains is still present after the filter.

You are right thanks. I'm on mobile right now but I guess I know why
Top domains is counting the requests and at this time there is no actual information about the result (blocked or not)
Will change that logic asap

No rush.....appreciate the effort. :-)

this gets more complicated than I thought.
what do you think about: message: is and not blocked_domain :*
"is" should grab all reponse events (regardless of type) but I'm not sure if I miss something

Busy testing your suggestions....getting a lot of inconsistencies. I'll feedback once I know more...

@dbouwer I've made some progress. I've implemented a new field "ip_or_domain_response" which we can use in the permitted domain viz. This way, we can easily show the results which are NOT piholed.
Previously it was indeed the case that I evaluated (incorrectly) the requests where we didnt know it it is going to be blocked or not - now we are evaluating the responses
However it would be great if you some spare time to test it because right now I'm not 100% sure the counting works 100% correctly.
Advice would be to create a new viz with ne field next to the old one to have a better comparization.
updated: grok logic: https://github.com/nin9s/elk-hole/pull/30
please update the output section to your liking
by the way: there maybe some strange differences between the domains being displayed betwenn the old and the new viz but I suspect this sources from the fact pihole is NOT blocking CNAME until now: https://discourse.pi-hole.net/t/apply-pi-hole-blocking-to-cnames/25445/89
example:
19:00:28 dnsmasq[1067]: 4716531 <IP_ADDRESS>/62623 query[A] d179kwmlpc4o47.cloudfront.net from <IP_ADDRESS>
19:00:28 dnsmasq[1067]: 4716531 <IP_ADDRESS>/62623 /etc/pihole/gravity.list d179kwmlpc4o47.cloudfront.net is <IP_ADDRESS>

19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 query[A] cdn.samsungcloudsolution.com from <IP_ADDRESS>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 forwarded cdn.samsungcloudsolution.com to <IP_ADDRESS>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 reply cdn.samsungcloudsolution.com is <CNAME>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 reply d179kwmlpc4o47.cloudfront.net is <IP_ADDRESS>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 reply d179kwmlpc4o47.cloudfront.net is <IP_ADDRESS>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 reply d179kwmlpc4o47.cloudfront.net is <IP_ADDRESS>
19:23:25 dnsmasq[1067]: 4774867 <IP_ADDRESS>/46770 reply d179kwmlpc4o47.cloudfront.net is <IP_ADDRESS>

got the idea?

there is another issue we face since we are evaluating the responses because if the response is different from the actual domain query if the answer is a CNAME
see here:
domain answer not equal domain reponse because of cname (imap-mail.outlook.com vs VIE-efz.ms-acdc.office.com)

dig **imap-mail.outlook.com**

; <<>> DiG 9.10.3-P4-Debian <<>> imap-mail.outlook.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36541
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;imap-mail.outlook.com.         IN      A

;; ANSWER SECTION:
imap-mail.outlook.com.  886     IN      CNAME   outlook.office365.com.
outlook.office365.com.  658     IN      CNAME   outlook.ms-acdc.office.com.
outlook.ms-acdc.office.com. 658 IN      CNAME   VIE-efz.ms-acdc.office.com.
**VIE-efz.ms-acdc.office.com**. 658 IN      A       <IP_ADDRESS>
**VIE-efz.ms-acdc.office.com**. 658 IN      A       <IP_ADDRESS>
**VIE-efz.ms-acdc.office.com**. 658 IN      A       <IP_ADDRESS>
**VIE-efz.ms-acdc.office.com**. 658 IN      A       <IP_ADDRESS>

;; Query time: 0 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Sat Nov 23 20:07:14 CET 2019
;; MSG SIZE  rcvd: 229

answer equal domain (heise.de vs heise.de)
dig **heise.de**

; <<>> DiG 9.10.3-P4-Debian <<>> heise.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39314
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;heise.de.                      IN      A

;; ANSWER SECTION:
**heise.de.**               86301   IN      A       <IP_ADDRESS>

;; Query time: 0 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Sat Nov 23 20:07:22 CET 2019
;; MSG SIZE  rcvd: 53

Hi nin9s
I tested the new field and the results are not there just yet.
I included screenshots from the pihole's web dashboard and 3 tables from elk-hole.
Top Blocked and piholed is exactly the same.
Top Permitted and ip_or_domain_response filtered is way off. (I created a viz with the ip_or_domain_response filter applied)
elk-hole is counting way too many hits compared to pihole.

could it be related to: https://discourse.pi-hole.net/t/total-queries-in-dashboard/9786
?

""We’re counting the queries from inside the resolver (FTLDNS), so it might be different from a program looking at the log.""
Ok so we shouldn't really compare them directly.
Only issue I see then is that the ip_or_domain_response filter is removing valid permitted domains if you just look at the following 2 URL's from the previous screenshot...
They don't even show up in the ip_or_domain_response results
connectivitycheck.gstatic.com
mtalk.google.com

for mtalk.google.com this would fall under the CNAME issue mentioned above. ip_or_domain_response is populated by the answer, not the request! So if we query for mtalk.google.com the response would be a cname:
; <<>> DiG 9.10.3-P4-Debian <<>> mtalk.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39218
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mtalk.google.com.              IN      A

;; ANSWER SECTION:
mtalk.google.com.       20043   IN      CNAME   mobile-gtalk.l.google.com.
------------------------------->   mobile-gtalk.l.google.com. 472  IN      A       <IP_ADDRESS>

;; Query time: 0 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Sun Nov 24 11:44:05 CET 2019
;; MSG SIZE  rcvd: 100

but the count of the permitted domains in general or way to low in arent they? There is still something we might miss here ...

I'm still investigating to see if I can find an easier pattern in the pihole.log file...

and what happens with replies like this??
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 query[A] za-odc.samsungapps.com from <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 forwarded za-odc.samsungapps.com to <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply za-odc.samsungapps.com is
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply za-odc.gw.samsungapps.com is
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
Nov 23 13:56:40 dnsmasq[1514]: 18038 <IP_ADDRESS>/54826 reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>

and what happens with replies like this?? 1 query, 10 replies

what happens is the same as with the other CNAME records
dig  za-odc.samsungapps.com

; <<>> DiG 9.10.3-P4-Debian <<>> za-odc.samsungapps.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50873
;; flags: qr rd ra; QUERY: 1, ANSWER: 10, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;za-odc.samsungapps.com.                IN      A

;; ANSWER SECTION:
za-odc.samsungapps.com. 899     IN      CNAME   za-odc.gw.samsungapps.com.
za-odc.gw.samsungapps.com. 900  IN      CNAME   fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com.
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>
fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com. 900 IN A <IP_ADDRESS>

;; AUTHORITY SECTION:
eu-west-1.elb.amazonaws.com. 591 IN     NS      ns-1053.awsdns-03.org.
eu-west-1.elb.amazonaws.com. 591 IN     NS      ns-2023.awsdns-60.co.uk.
eu-west-1.elb.amazonaws.com. 591 IN     NS      ns-341.awsdns-42.com.
eu-west-1.elb.amazonaws.com. 591 IN     NS      ns-739.awsdns-28.net.

;; Query time: 1494 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Sun Nov 24 16:14:19 CET 2019
;; MSG SIZE  rcvd: 417

the old behavior was to count the actual request e.g. za-odc.samsungapps.com but the new behavior is to count the response to decide if it a blocked domain or not.
Unfortunately the CNAME responses all count as a single (response) event
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>
reply fe-pew1-ext-samsungapps4-lb-1819241093.eu-west-1.elb.amazonaws.com is <IP_ADDRESS>

and they look the same as if it wasnt a CNAME reply but a [A] response.
See what I mean?
Currently I'm thinking of a way to query the pihole api concerning its blocked domain status und only populate "domain_request" if its not a blocked domain.
http://pi.hole/admin/api.php?getAllQueries&domain=google.at&auth=<token>
getAllQueries
Fifth column: Answer type (1 = blocked by gravity.list , 2 = forwarded to upstream server, 3 = answered by local cache, 4 = blocked by wildcard blocking)


pubspec.yaml platform dependencies error

We are parsing flutter app size with cmd  "flutter build apk --analyze-size " and get result below:
...
package:dbus                                                        183 KB
...
dbus plugin is not as expected, so we checked  plugin dependecies:
|-- connectivity_plus 2.2.2
|   |-- connectivity_plus_linux 1.3.1
|   |   |-- connectivity_plus_platform_interface...
|   |   |-- flutter...
|   |   |-- meta...
|   |   '-- nm 0.5.0
|   |       '-- dbus 0.7.3
|   |           |-- args...
|   |           |-- ffi...
|   |           |-- meta...
|   |           '-- xml...
the problem is that why android apk contains linux plugin.
we checked connectivity_plus plugin pubspec.yaml  describles as :
https://github.com/fluttercommunity/plus_plugins/blob/main/packages/connectivity_plus/connectivity_plus/pubspec.yaml

according to officail docs , only linux app can find connectivity_plus_linux, however why android apk packaged linux plugin.https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs
so i guess it would be some error with dependencies process which is not match with official docs description.
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.5, on macOS 11.6 20G165 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

Triage report
I can reproduce this issue. The steps I took:

Create a new Flutter app
Add connectivity_plus (possibly any plugin that supports linux) via flutter pub add connectivity_plus
Run flutter build apk --analyze-size --target-platform android-arm64

Logs from step 3
app-release.apk (total compressed)                                          6 MB
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  META-INF/
    CERT.SF                                                                 3 KB
    CERT.RSA                                                              1014 B
    MANIFEST.MF                                                             2 KB
  classes.dex                                                             267 KB
  lib/
    arm64-v8a                                                               6 MB
    Dart AOT symbols accounted decompressed size                            3 MB
      package:flutter                                                       2 MB
      dart:core                                                           246 KB
      dart:ui                                                             203 KB
      dart:typed_data                                                     177 KB
      dart:collection                                                      98 KB
      dart:async                                                           76 KB
      dart:ffi                                                             59 KB
      dart:convert                                                         50 KB
      dart:io                                                              38 KB
      dart:isolate                                                         23 KB
      package:vector_math/
        vector_math_64.dart                                                23 KB
      dart:developer                                                        7 KB
      dart:math                                                             2 KB
      package:issue_113311/
        main.dart                                                           2 KB
      file:/
        /
          /
            C:/
              Users/
                Nabeel/
                  dev/
                    nevercode/
                      issue_113311/
                        .dart_tool/
                          flutter_build/
                            dart_plugin_registrant.dart                    787 B
      package:plugin_platform_interface/
        plugin_platform_interface.dart                                     756 B
      package:collection/
        src/
          priority_queue.dart                                              703 B
      dart:vmservice_io                                                    634 B
      package:connectivity_plus_linux/
        src/
          connectivity.dart                                                484 B
      package:connectivity_plus_platform_interface/
        connectivity_plus_platform_interface.dart                          479 B
  assets/
    flutter_assets                                                        199 KB
  AndroidManifest.xml                                                       1 KB
  res/
    CG.png                                                                  1 KB
  resources.arsc                                                           23 KB
  kotlin/
    collections                                                             1 KB
    kotlin.kotlin_builtins                                                  4 KB
    reflect                                                                 1 KB

From the above logs, you can see connectivity_plus_linux being included even though the plugin isn't being used in the application. If I am not wrong, this should have been removed during the tree shaking phase.

this should have been removed during the tree shaking phase

Currently Dart doesn't support tree shaking on Platform conditionals.

/cc @mkustermann @sstrickl

@mraleph What is the specific customer request here? I was just keeping this open for docs; https://github.com/flutter/flutter/issues/99412 is tracking the core issue of including the code, which seems more likely to be what someone would care about being fixed.

@stuartmorgan sorry, I missed that this is documentation specific issue. Labeled https://github.com/flutter/flutter/issues/99412 as customer: penguin as well.
We are in process of looking at tree-shaking of platform specific code.

https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edi

https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edi

the problem is that why android apk contains linux plugin.

There's no such thing as a platform-specific dependency at the Dart level. It's in your apk because, as shown in the lower red box in your screenshot, it's a dependency of the connectivity_plus package.
This is mostly a duplicate of #99412, but before closing it as such:

according to officail docs , only linux app can find connectivity_plus_linux,

This is definitely not true, and we shouldn't have docs saying it is. Could you link to the specific documentation you are referring to?

https://docs.google.com/document/d/1LD7QjmzJZLCopUrFAAE98wOUQpjmguyGTN2wd_89Srs/edi

Could you quote the specific part you are referring to? I don't see that in the design doc.

The auto-close was correct; without knowing what docs say what the comments above say they claim (which I was unable to find), we can't update them.

Okay thank you for the clarification. I reopened it based on the following comment since I though this issue still needed tracking.

I was just keeping this open for docs; https://github.com/flutter/flutter/issues/99412 is tracking the core issue of including the code, which seems more likely to be what someone would care about being fixed.

Given an answer to my follow-up question about the docs issue it would need to be tracked as an issue to fix the docs, but without that information there's nothing actionable here.


litestar 2.12.1 :snowflake:

litestar 2.12.1 :snowflake:
Destination channel: Snowflake
Links

PKG-5394
dev_url:        https://github.com/litestar-org/litestar/tree/v2.12.1
conda_forge:    https://github.com/conda-forge/litestar-feedstock/blob/main/recipe/meta.yaml
pypi:           https://pypi.org/project/litestar/2.12.1
pypi inspector: https://inspector.pypi.io/project/litestar/2.12.1

Explanation of changes:

new version number

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_24x6w0dvdk/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:513: missing_description: The recipe is missing a description

===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:513: missing_license_family: The recipe is missing the about/license_family key.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:31: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
===== Final Report: =====
12 Errors and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_25ivtoj1t3/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:508: missing_description: The recipe is missing a description

===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:508: missing_license_family: The recipe is missing the about/license_family key.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:26: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
===== Final Report: =====
12 Errors and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_88eaul_05b/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:508: missing_description: The recipe is missing a description

===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:26: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:508: missing_license_family: The recipe is missing the about/license_family key.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
===== Final Report: =====
12 Errors and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_d86g6himvy/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:504: missing_description: The recipe is missing a description

===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:504: missing_license_family: The recipe is missing the about/license_family key.
clone/recipe/meta.yaml:1: missing_python: For pypi packages, python should be present in the host and run sections. Missing in {}
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:22: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
===== Final Report: =====
13 Errors and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_04u8ytqtro/clone` failed. (See above for error)
The following problems have been found:
===== WARNINGS =====

clone/recipe/meta.yaml:510: missing_description: The recipe is missing a description

===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:510: missing_license_family: The recipe is missing the about/license_family key.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:28: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
===== Final Report: =====
12 Errors and 1 Warning were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_50wz0myqb8/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:28: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
===== Final Report: =====
11 Errors and 0 Warnings were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_2fa9t0b18i/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:28: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
===== Final Report: =====
11 Errors and 0 Warnings were found

@boldorider4 could you please restore and comment out or skip the packages that cannot be built because of missing dependencies? In future versions we might be able to enable them. We discussed this with @psteyer and in the ticket are all the notes

Fair enough. I was not a big fan of having large portions of code commented out so I went with a cleaner commented section, since I figured we would need to update the pinning anyway in future builds, but I can just revert the last commit.

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_030rgikz9n/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:28: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
===== Final Report: =====
11 Errors and 0 Warnings were found

Linter check found the following problems:
ERROR conda.cli.main_run:execute(125): `conda run conda-lint /tmp/abs_58iorio635/clone` failed. (See above for error)
The following problems have been found:
===== ERRORS =====

clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-brotli": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-annotated-types": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_wheel: For pypi packages, wheel should be present in the host section
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-prometheus": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:28: wrong_output_script_key: It should be outputs/x/script, not outputs/x/build/script
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jwt": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-cryptography": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-structlog": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-full": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-attrs": Python packages require a python build tool such as setuptools.
clone/recipe/meta.yaml:1: missing_python_build_tool: output "litestar-with-jinja": Python packages require a python build tool such as setuptools.
===== Final Report: =====
11 Errors and 0 Warnings were found


[Android bug] when changing screen/scrolling, tooltip remains fixed on screen

For example, when if presented on tab A, on a list on the 2nd row, when moved to Tab B, you still see it on the screen, but above tab B

ViewTooltip, the android native module, looks for an instance of NestedScrollView for the tooltip to follow..
You can verify it works by installing react-native-nested-scroll-view and by replacing your ScrollView with NestedScrollView.
I think the issue should be raised in https://github.com/florent37/ViewTooltip.


[17.09] Relabel config files.

back port of https://github.com/moby/moby/pull/34732
Without relabel these files, SELinux-enabled containers will show
"permission denied" errors for configuration files mounted with
docker server create ... --config ... ....
(cherry picked from commit 472c03a8c364090afb88258b3dd9748183c29d05)

ping @cpuguy83 PTAL


Add unit tests for library

This pull request is sample of unit test cases that we plan to contribute in order to raise the overall coverage to 80%. Code coverage is measured using Android Studio. This pull request increases code coverage of library from 0% to 11.99%.

Metric
Before
After

Coverage %
0%
18%

Lines Covered
0
85

Total Lines
460
460

Please let me know if you have any questions.
Mohd Farid
DevFactory - Code Quality Team

Thanks! Reviewing!!


update example data url structure

Fix all examples to use Git URL links to data

FYI, your mapbox access token is sitting in plain text in the notebooks when not rendered. I would clear all output before pushing.

Thanks, @anmolgarg.  It's a public token, so it has read-only access to all APIs.
We will clear out the token out from the examples, out and rotate the token in the examples today.

Cool. It gave me a chance to check out the zip code viz which does not work under my account since I believe I don't have access to mapbox://rsbaumann.bv2k1pl2.

@anmolgarg I just made that tileset (mapbox://rsbaumann.bv2k1pl2) public - let me know if the postcode example works now!

Hm nope, still not working for me.

@anmolgarg you may have to clear your browser cache to try it out immediately - I just confirmed the tileset is public and I can retrieve it with any Mapbox public access token.

That did the trick. Confirmed its working now. Awesome stuff!

Will get some more examples moving soon @anmolgarg.  It works with any tileset you put on your Mapbox account.  Stay tuned, and share what you build!


Feat/1017 revision history limit

Added revision history limit enricher

added standard default enricher
added unit test cases
updated enricher document

Fix for #1017

LGTM - @rhuss / @nicolaferraro you happy to merge this now?

We're eagerly awaiting this PR - thanks for the work on it!  Are we able to merge and release? @rhuss @nicolaferraro

@jstrachan sorry, I really try my best to speed things up (although quite under load and with a lot of ppl in pto). would be nice if you could set at least a deadline for the pr review.
Afaik we are still using a merge build for doing a PR merge.

@rhuss ohh looks like I'm late to party. Still is there any scope to push the changes for to minor review comments?

@hrishin no problem ;-) You can just create a new PR from the same branch (which I then merge ASAP).


⚠ Bofrost.be has degraded performance

In 57b1bd7, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1785 ms

Resolved: Bofrost.be performance has improved in aade62f.


Rename package on nuget.org

Mistakes happen. And I for one made the mistake of naming a package DotNetCross.Memory.Unsafe.dll note this include .dll. I would like remove .dll of the package name, but there is no apparent way to do this on nuget.
Is this possible? Or could this feature be added?
Or do I have to delete the old package with .dll in the name and then upload new without?

Please upload a new one without, and send us a support request asking for deletion of the old one.

I tried to upload without the .dll part but got the following message:

The ID of your package, 'DotNetCross.Memory.Unsafe', is similar to the title of an existing package, which can cause confusion with our users. Please modify the ID of your package and try uploading again.

Package removed, you should now be able to re-upload.


Autocomplete for places and addresses

Any chance of adding autocomplete for searched terms? As shown here https://developers.google.com/maps/documentation/javascript/places-autocomplete #

No enough time at this time. Sorry.

@GuelorEmanuel, I think it should be possible to use the Javascript Places library directly to get autocompletion.

@tjaartvdwalt do you have any example?
I'm working with http://devfanatic.com/blog/blog/2015/11/03/google-places-autocomplete-with-ionic-framework/ but it's not working

This Plugin is very good but does not come with Auto-Complete. Can anyone recommend a cordova/phonegap autocomplete plugin. Thank you.


Modify job types to respect additional namenode delegation token configs

Modify the Hadoop(Spark,Hive,Pig,Java)Job types to respect the MapReduce- and Spark-level configurations for additional namenodes from which to fetch delegation tokens, in addition to the Azkaban-level other_namenodes configuration. MapReduce and Spark both have configurations for specifying namenodes from which additional delegation tokens should be fetched before submitting a job (mapreduce.job.hdfs-servers and spark.yarn.access.namenodes, respectively) but previously Azkaban ignored these, using it's own other_namenodes property. Azkaban should additionally respect these framework-level configurations.

In addition to the unit tests, what other tests do you plan to run?

@xkrogen
AFAIK. The spark code is moving outside azkaban-plugins. I think this might break if/when that happens?

@HappyRay About other testing, I wanted to ask you about that. Do we have any good way to integration test these? I'm not familiar with the Azkaban develop/test process.
@suvodeep-pyne Where is it moving? Can we replicate this same logic there?

@xkrogen
It is moving to an internal repo as far as I am aware. @Victsm can provide some context.

@xkrogen
We are moving the code outside of this repo in order to enable hot fix deployment for Spark job type plugin.
Azkaban team cannot hot deploy Spark job type plugin if the plugin is inside this repo.
We need to be able to generate Spark job type plugin JAR and publish it to artifactory in order to enable hot deployment which cuts down the delay for deploying changes to Spark job type.

@Victsm Okay, sounds good. We need this fix to be deployed by next week. I'm assuming the change will not happen by then? In any case we need this fix in the SparkJob plugin wherever it lives.

Updated the code to fix an issue with the previous code where it was relying on Spark being on the classpath (which it is not). Also refactored a bit per @HappyRay 's comments. I tested this on a live Azkaban cluster and confirmed that both Hadoop-type and Spark-type jobs respected this configuration successfully.


Re-add dashboard short links

This PR re-adds the changes from #4760 to include a short link button for dashboards that was accidentally removed in #4528.
Additionally:

The button is now available to all users, not just those with save permissions
The shortened link will include all active dashboard filters so users can share filtered dashboards with each other

Codecov Report

Merging #5398 into master will increase coverage by <.01%.
The diff coverage is 57.14%.

@@            Coverage Diff             @@
##           master    #5398      +/-   ##
==========================================
+ Coverage   61.21%   61.21%   +<.01%
==========================================
  Files         373      374       +1
  Lines       23709    23713       +4
  Branches     2750     2751       +1
==========================================
+ Hits        14513    14517       +4
  Misses       9181     9181
  Partials       15       15

Impacted Files
Coverage Δ

...erset/assets/src/dashboard/util/getDashboardUrl.js
100% <100%> (ø)

...uperset/assets/src/dashboard/components/Header.jsx
59.22% <53.84%> (+0.8%)
:arrow_up:

Continue to review full report at Codecov.

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

🏆 !
Can you share a screenshot of what it looks like?

I'm on PTO and will take a look at this next week when I'm back.
Re the UI We'd like all links in the drop-down to simplify the top level
UI. We've also gotten rid of use of icons as they're often cryptic.
Can you match the aesthetics of the current drop-down options?
On Wed, Jul 18, 2018 at 21:22 Jay Lindquist<EMAIL_ADDRESS>wrote:

It's the same as the change by @hughhhh https://github.com/hughhhh
[image: dashboard-short-url-modal]
https://user-images.githubusercontent.com/222699/42919732-f3af0654-8ad8-11e8-83ed-e38708d73149.PNG
When a user does not have the ability to save the dashboard:
[image: dashboard-short-url-modal-nosave]
https://user-images.githubusercontent.com/222699/42919739-00913d88-8ad9-11e8-8aac-d05bc01c5c8e.PNG
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/apache/incubator-superset/pull/5398#issuecomment-406142402,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEScifN3JNrXTBwHSOXhJxzCnB37N9tMks5uH_t3gaJpZM4VROD9
.

--
Chris
Data Visualization
San Francisco

Sorry for the late response on this PR:

The short link is now a menu item with a modal instead of a button with a pop-over to match other options (e.g. refresh interval)
Read-only users now have a menu with a disabled "Edit dashboard" button with the following options:

Force refresh
Auto refresh
Share dashboard

The "Email dashboard link" menu item is now replaced with "Share dashboard"

Read-only view:

Edit mode for users who can save dashboards:

New modal:

thanks @jaylindquist !


Is there a way to await for the results of setVisible(...)?

Is your feature request related to a problem? Please describe.
In case the user is not connected, I show the modal dialog via setVisible(true), and immediately after, I would like to check if publicKey is set and kick off the minting process. I could use this via setting a flag, and then check it via useEffect(..), but ideally, there would be some callback.
Describe the solution you'd like
const { presentWalletLoginModal } = useWalletModal();
..
const walletLoginModalResults = await presentWalletLoginModal();
if (walletLoginModalResults.connected) {
   mint(walletLoginModalResults.publicKey, ...)
}

Describe alternatives you've considered
I could use select(...) and connect(...) but this means I would need to rewrite the modal wallet flow, which I would rather not.

To your direct question, the answer is no. You can't rely on state changes to happen synchronously. Like you mentioned, you can use useEffect to react to visible changing though. This is really just a React thing, and the recommended pattern for doing this.
But why wouldn't you check for the public key first? Opening the modal doesn't set it. There are no "results" to speak of -- the action of showing the modal doesn't have a promise because it doesn't imply that a wallet will be selected, auto connected, etc.
The UI layer that includes the modal is it's own package, and it handles state changes the same way through the context. It's generally not a good pattern to try to await promises inside your UI.


Add last_active filter to the search filters.

Supercedes #1390
Fixes #1303

This is the most primitive implementation of a last_activity filter. Some things that struck me while doing this:\

This isn't a huge amount of code, so it's not a huge deal but there's a lot of duplication here.
We can certainly pull the date formatters out into shared code, but is there more we can do? Especially if we're expanding this system to more fields going forward.

Deploying as 2.50.2.


post-processing: ignore very small annotations

ignore annotations of less than 5% of the largest annotation

done


Passing bindings to a component

Imagine the need to pass something to a component (values, objects or functions): they are the bindings of that component.
In this primitive example of a modal dialog, I use a flag to show the modal and, when the modal is closed, some info is returned and the flag is set to false to hide the modal.
Notes:

I pass the whole state, as bindings, to the "child" component, and not a slice of the state: I need only openBarModal and closeBarModal.
I use observe api to add another handler to the state, rendering the "child" template, when the state (bindings) changes,

Concerns:

Do you think this bindings practice is feasible?
I am trying to reproduce this kind of approach (in AngularJS):

<token-dialog open-modal="$ctrl.openTokenModal"
    close-modal="$ctrl.closeTokenDialog(tokenInfo)">
</token-dialog>

The dialog is not closed after pressing "Close Bar Dialog" button, even if state.openBarModal is set to false in onCloseBarModal.

The caller Foo component, in the template:
            <button id="openBarDialog" type="button"
                onclick="${() => {
                    state.openBarModal = true;
                }}">Open Bar Dialog
            </button>

and in the controller:
        this.state = Introspected({
            items,
            selectedItem: items[1],
            toggleList: true,
            openBarModal: false,
            closeBarModal: this.onCloseBarModal
        }, state => template.update(render, state, events));

        BarComponent.bootstrap(this.state);
...

    onCloseBarModal(res) {
        this.state.openBarModal = false;
        console.log(res);
    }

The callee Bar Component:
// bar.controller.js
class BarController {
    constructor(render, template, bindings) {
        Introspected.observe(bindings,
            state => template.update(render, state));
    }
}

// bar.component.js
class BarComponent {
    static bootstrap(bindings) {
        const render = hyperHTML.bind(Util.query("bar-dialog"));

        this.barController = new BarController(render, BarTemplate, bindings);
    }
}

// bar.template.js
class BarTemplate {
    static update(render, state) {
        if (!state.openBarModal) {
            return;
        }

        render`
...
                        <button id="closeBarDialog" type="button"
                            onclick="${() => {
                                state.closeBarModal({ answer: "BarModal closed" });
                            }}">Close Bar Dialog
                        </button>
...

How to reproduce the issue: press "Open Bar Dialog", the dialog is displayed, then press "Close Bar Dialog" and the dialog is not closed, even if onCloseBarModal is called correctly (there is the log in the console).

The complete live example: https://plnkr.co/edit/YwsHHSvjpDx1uXfQwTA5?p=preview

I haven't tested yet but there is a fundamental issue in this approach: you are using non serializable data  through the state.
A state with a method? That smells, it's not a state anymore, rather a controller.
Do not use anything different from object, array, string, boolean, number, an d null for the state, and use the path information to eventually react to changes.
On top of that mistake, there is also another mistake: you are passing a class method to the state without binding it.
closeBarModal: this.onCloseBarModal
that one, should be
closeBarModal: this.onCloseBarModal.bind(this)
but we are back to the issue: you should really try to avoid methods and functions in a state or you easily fall into anti-patterns like the method that wasn't bound, and you cannot freeze and resurrect a state if not fully serializable.

This one works correctly: https://plnkr.co/edit/wAwHNpeTb0bGUMy7cAGV?p=preview
The difference w.r.t. the previous one:

Moved state.openBarModal = false; in BarTemplate / close onclick
Reset the modal template with render${hyperHTML.wire()``};, when I close it

A bit artificial, but it works.

Notes about rendering.

I thought to call the update of main template and to call the update of modal dialog, when openBarModal is true; hence the observe call on the state in the modal controller, adding the rendering of the modal.
So when openBarModal is false, I thought only the main template was rendered, and not the modal one. Apart the error where to set that variable (first point above), it worked in that way, but the modal template was not "closed".
It is not "closed" not because it is rendered again, indeed the conditional part (in Bar template) works correctly, but because the previous rendering is not removed from the dom.
So the question is more related to hyperHTML realm than Introspected one for this part (see the reset point above, the artificial workaround).

Notes about functions in the state.

I would like to pass callbacks to the child component.
At the beginning I separated state and bindings, like
// in the template
static update(render, state, bindings) {
...

// in the controller
Introspected.observe(bindings,
            state => template.update(render, state, bindings));
...

But that seems a rabbit hole more than a solution.
I didn't found any concern about the functions without a context (without .bind), because the functions are used like callbacks.

Ok, it seems I resolved passing events until the modal, so we don't have any function in the state and it is coherent with the rest of the controller in terms of state and events.
// in the main Foo controller
        this.state = Introspected({
            items,
            selectedItem: items[1],
            toggleList: true,
            openBarModal: false,
            answerBarModal: ""
        }, state => template.update(render, state, events));

        BarComponent.bootstrap(this.state, events);
...

// in the Bar modal component
        this.barController = new BarController(render, BarTemplate, state, events);
...

// in the Bar modal controller
class BarController {
    constructor(render, template, bindings, events) {
        Introspected.observe(bindings,
            state => template.update(render, state, events));
    }
}
...

// in the Bar modal template
                            onclick="${e => {
                                state.openBarModal = false;
                                events(e, { answer: "BarModal closed" });
                            }}">Close Bar Dialog

Live demo: https://plnkr.co/edit/F4xP7mQSAVIQwOFjIfTR?p=preview

It's a very big example and I'm lost in what's the problem exactly.
Can you please write the most minimal case ever to reproduce the issue, if there is an issue?
Thanks

Removing parts would hide the powerful features of the lib.
It is nice to see how the list is updated when the modal is displayed. :)
Joking apart, I recap the concerns.

[resolved] How to pass bindings to a component? Separating the bindings in terms of state and events, and passing them accordingly.

[half resolved] How to pass a part of the state to the component? At the moment I pass the whole state to the modal, but it would be nice passing only the relevant part. I cannot use two Introspected objects, two states, because I need to modify the same property in different templates.

        // this works if bindings is this.state,
        // but correctly it doesn't, if it is this.state.openBarModal
        Introspected.observe(bindings,
            state => template.update(render, state, events));

[resolved] How to empty a template? Using an empty wire, useful to remove conditionally a template from the dom.

render`${hyperHTML.wire(render, ":empty")``}`;

How to pass a part of the state to the component? At the moment I pass the whole state to the modal, but it would be nice passing only the relevant part.

This bit I don't understand. You can pass any sub-property of an introspected state to anything you want. You'll even be notified by updates, and you can use the path passed along to understand which bit should be updated or not.
Moreover, updates in hyperHTML are cheap, even of a whole app. The DBMonster table should demonstrate you should never worry about updating more, it's already deadly fast and you would rarely hit any performance issue updating a bigger page.
However, you could partially update if needed, but I need to see a simple example of the issue you are facing or I won't be able to help.

How to empty a template?

The following should do as well
render`${[]}`;

Although in general, that works only if the whole render passes through the same template literal, which is an emty surrounding strings in that case.
Example: if you had this
render`a ${[]} b`;

and you do this
render`a ${[]} b`;

The bound context of the render function will be upgraded again from scratch (but not its internal wires).
Does it make sense?

This bit I don't understand. You can pass any sub-property of an introspected state to anything you want.

It is not the use case of passing a sub-property and updating it.
That works nicely and the changes are automagically propagated.
Opening a new issue with a tiny example getting Type Errror.

The bound context of the render function will be upgraded again from scratch (but not its internal wires).

It makes sense, I hope. :)


Defaults for Options don't appear to be supported

I'd be happy to be wrong, but when I declare something like:
@QueryParam("limit") limit: Option[Integer]

I would expect limit to be None when the code is run. Instead, it's null. On the off chance that it's supposed to be null when no default is actually supplied, I also tried:
@QueryParam("limit") limit: Option[Integer] = None

To the same effect.
We were previously using the massrelevance version of this library, but this looks much better and seems to be maintained, however, we seem to have lost our optional defaults.
With some direction, I'll happily try to fix this myself, but I'm pretty new to jersey's internals.

This definitely sounds like a problem I'd like to resolve, however I'm having some trouble reproducing it.
Would you mind adding a test that demonstrates the issue, perferably to ScalaApplicationSpecIT, but if you can't stomach that mass of code, a standalone test would be fine too.
Ideally, it should fail, I imagine with a 'NullPointerException, or other reason that clearly demonstrates the default being null`.

Could you also confirm the version of both Scala and dropwizard-scala that you're using?

Thanks for responding. I'm just trying to maintain the status quo while switching libraries here. Somehow defaults were supported before, so I'm curious as to whether or not I'm crazy or something bigger changed.
I have a PR with a couple tests, fwiw, but it sounds like this is working as expected per your comments above https://github.com/datasift/dropwizard-scala/pull/7

Yeah, so your tests pretty much confirm what I said above. I'm not sure how Scala's default arguments can ever have worked in Jersey, given the way they compile.
I'm afraid that, since this is the expected behaviour, there's nothing I can really do about it. Your best bet would be to use @DefaultValue(Some(...)) instead of Scala's default arguments. Not ideal, but then Jersey doesn't exactly integrate great with Scala anyway.


Load 'Hello World' sandcastle demo when demo from URL is not found

Fixes #2182
Currently, if you go to a sandcastle link where the src query parameter is not the same as the name of a sandcastle demo, nothing shows up on the page except for an error message.
This change makes sandcastle load the Hello World example instead, but it doesn't change the URL and it logs an message to the console saying the demo was not found.
I added var hello_world_index to the gallery-index.js file that gets generated on npm run build to make it easy to load the hello world example.

FYI for any other folks looking at this, the dev version of the link to test is:
http://localhost:8080/Apps/Sandcastle/index.html?src=3D

Thanks @emackey!  This is ready

Awesome.


[PROPOSAL] Asserting that another Job is chained

Versions

PHP version: 7.2.4
Laravel version: 5.7.28
Package version: 3.1.9

Description
In my controller I use the following code:
Excel::import(new AttendeesImport, $request->file('file'))->chain([
  new UploadAccessCodesJob(),
  new GenerateLettersJob()
]);

Further I use the ShouldQueue concern.
In my Feature test I want to assert not only that the file was imported via
/** @test */
public function a_csv_file_with_attendee_data_can_be_imported()
{
    $response = $this->json('POST', '/api/v1/attendees', [
        'file' => new UploadedFile(base_path('tests/exampleAttendeeList.csv'), 'exampleAttendeeList.csv', 'text/csv', null, true)
    ]);
    $response->assertStatus(200);

    Excel::assertImported('exampleAttendeeList.csv');
    Excel::assertQueued('exampleAttendeeList.csv');
}

but also that the UploadAccessCodesJob and the GenerateLettersJob were pushed to the Queue or handled by Laravel-Exel.
How can I archive this?
Thank you in advance.

Hey @Lednerb, asserting the chain is currently not supported with Excel::fake()

Thanks, @patrickbrouwers for your response.
I've changed the topic respectively.

Feel free to PR it to the ExcelFake class. Currently not really any priority on it from my perspective.

@patrickbrouwers
I'm trying to just use the Queue::fake() to assert that the chained jobs are pushed, but this doesn't seem to work for me.  Or maybe I'm just doing something wrong.
Calling class:
class ImportArticlesFromFile
{
    public function run(UploadedFile $uploadedFile, string $templateType, Authenticatable $user)
    {
        $importClass = config("ro-import-templates.{$templateType}.import");

        $import = Import::create(['input_source' => ArticleInputSourceEnum::coerce($templateType)->value]);

        (new $importClass($import))->queue($uploadedFile)->allOnQueue('my-custom-queue')->chain([
            new EnqueueArticlesFromImportForEnrichment($import),
            new SetInputSourcesForImportedArticles($import),
            new NotifyUserOfCompletedArticleImport($user, $import)
        ]);
    }
}

Test case:
  /** @test */
    public function articles_are_enqueued_after_file_import()
    {
        Queue::fake();

        $fileName = 'member_import_template.xlsx';
        $path = $this->getTestImport();

        $file = new UploadedFile(
            $path,
            $fileName,
            null,
            null,
            true
        );

        (new ImportArticlesFromFile)->run($file, 'publisher', $this->testUser);

        Queue::assertPushed(EnqueueArticlesFromImportForEnrichment::class);

Can you open a new issue for this

@denitsa-cm Did you ever open a ticket or resolve this? I currently have the same issue.

@devonmather I think I've forgotten to open a new issue for this. Will do so now. I don't seem to have resolved the issue. I've just ended up asserting that my filed was queued..

@devonmather Oh well, maybe there's no point in opening a new issue, since this issue was exactly for this I think.

Is there any update on this? Running into same problem while testing exports. For time being I extends ExcelFake. Not sure if it is the good solution.
<?php

namespace Tests\Fixtures;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\PendingDispatch;
use Illuminate\Support\Facades\Queue;
use Maatwebsite\Excel\Fakes\ExcelFake as BaseExcelFake;

class ExcelFake extends BaseExcelFake
{
    private $job;
    /**
     * @inheritDoc
     */
    public function queue($export, string $filePath, string $disk = null, string $writerType = null, $diskOptions = [])
    {
        Queue::fake();

        $this->stored[$disk ?? 'default'][$filePath] = $export;
        $this->queued[$disk ?? 'default'][$filePath] = $export;

        return new PendingDispatch($this->job = new class implements ShouldQueue {
            use Queueable;

            public function handle()
            {
                //
            }
        });
    }

    public function assertPushedWithChain($chain) : void
    {
        Queue::assertPushedWithChain(get_class($this->job), $chain);
    }
}

I'm still open to accept a PR which adds that  assertion.

@patrickbrouwers, I can make a PR for that.
What do you think about the approach I am using? Will it work ?

@sanjitkung I think that will be fine. I'm assuming this works correctly for you?

Yes, For my use case it works. I will send PR soon.

@sanjitkung thanks for the snippet, I've added it myself now, need a bit more work to get it fully work though. Will be in next release!


Support to use heap for pool for large systems

Problem
What is being fixed?  Examples:
Large systems (e.g. Linux) do not need actual 'pools' of data and would rather use heap. We could always preallocate large amounts (e.g. saying a linux controller can connect to 100 devices at a time) and virtual memory will ensure we do not really use that much physical RAM.
Pools always need to be over-provisioned for the worst case, reserve space from data section for each pool waste RAM and this adds up the more memory when we have more pools.
This is the initial change for pool management optimization in chip, I would like to collect feedback and make sure if this is the right direction before scaling it further.

Fixes #7716

Change overview
Add configuration to support to use heap for pool for large systems.
Testing
How was this tested? (at least one bullet point required)

Run $ ./TestSystemObject and make sure all test pass
Run Echo ping test and confirm the test succeed with this change.

I agree that unconstrained platforms do not share the same concerns that motivated creation of the object pools.  There aren't the same risks around fragmentation that can occur with dynamic allocation of a large number of small objects, and particularly objects that may have a long lifetime.
However, moving the pools from the bss segment to the heap doesn't seem functionally different.  My preference would instead be that when System::TryCreate is called, this is just a thin wrapper for malloc.  This would allow unconstrained platforms to leverage the fact they have abundant memory and not exhaust the sPools at runtime simply because we developers did not anticipate a particular use case.
Unfortunately, I don't know how this would be easily achieved.  One current use of the sPools is for layers to walk all objects in the pool to perform particular operations.  Apparently objects do need to be known to the layer that allocated them.  I think to refactor in the way I'm suggesting, we would need to organize the objects into some type of accessible, but expandable structure like a linked list.
Alternatively, we would need to remove the use cases where layers require immediate access to all objects in the pool.  This seems to be the biggest user of that pattern:
void InetLayer::HandleSelectResult(int selectRes, fd_set * readfds, fd_set * writefds, fd_set * exceptfds)

Does anybody know why we need to walk every single pool object in this function?  That seems fundamentally unscalable.  I admit I haven't looked at the inet code very closely.  But if we can remove this type of behavior, then a refactor where System::TryCreate becomes a thin wrapper for malloc is very straight forward.

Alternatively, we would need to remove the use cases where layers require immediate access to all objects in the pool. This seems to be the biggest user of that pattern:
void InetLayer::HandleSelectResult(int selectRes, fd_set * readfds, fd_set * writefds, fd_set * exceptfds)

That case is going away (#5556 / #6561).

I'm trying to understand the actual goal here.
So far what I am seeing is that we still have a pool size template argument; it's just that instead of allocating the pool memory inline in the object we are heap-allocating that memory. What is the benefit of doing this?
I thought the idea we had been discussing was to allow heap-allocation of the individual objects. This PR does not really seem to be doing that...

The goal of this PR is to use a flag to allow reserve pool space from heap instead of global static memory for big systems. The pool still use big chunk of continuous memory consist of fixed-size blocks. Pools always need to be over-provisioned for the worst case, virtual memory will ensure we do not really use that much physical RAM until we actually access the data. It also allow the system return the memory reserved by pool back to system after usage.
Could you explain more about heap-allocation of the individual objects?  Then we will have extra meta data to track those individual and discrete objects in memory, right? how we handle the memory fragmentation if the pool memory is not continuous?

I'm trying to understand the actual goal here.
So far what I am seeing is that we still have a pool size template argument; it's just that instead of allocating the pool memory inline in the object we are heap-allocating that memory. What is the benefit of doing this?
I thought the idea we had been discussing was to allow heap-allocation of the individual objects. This PR does not really seem to be doing that...

The goal of this PR is to use a flag to allow reserve pool space from heap instead of global static memory for big systems. The pool still use big chunk of continuous memory consist of fixed-size blocks. Pools always need to be over-provisioned for the worst case, virtual memory will ensure we do not really use that much physical RAM until we actually access the data. It also allow the system return the memory reserved by pool back to system after usage.

OK, this wasn't obvious to me.  But can't the kernel map the bss to the zero virtual page?  I think this copy-on-write virtual memory optimization is possible regardless of where we allocate the pools.

Could you explain more about heap-allocation of the individual objects? Then we will have extra meta data to track those individual and discrete objects in memory, right? how we handle the memory fragmentation if the pool memory is not continuous?

I believe @bzbarsky-apple is suggesting the same thing I was: make System::TryCreate a shallow wrapper for malloc such that each individual object is malloc'ed.
The only remaining question is whether the layers need to track objects themselves.  @kpschoedel's comment implies they may not.  If not, can't we just map System::TryCreate to malloc and map System::Release to free?  It would be really nice if we could.

I'm trying to understand the actual goal here.
So far what I am seeing is that we still have a pool size template argument; it's just that instead of allocating the pool memory inline in the object we are heap-allocating that memory. What is the benefit of doing this?
I thought the idea we had been discussing was to allow heap-allocation of the individual objects. This PR does not really seem to be doing that...

That's certainly what I've been pushing for.

The goal of this PR is to use a flag to allow reserve pool space from heap instead of global static memory for big systems. The pool still use big chunk of continuous memory consist of fixed-size blocks. Pools always need to be over-provisioned for the worst case, virtual memory will ensure we do not really use that much physical RAM until we actually access the data. It also allow the system return the memory reserved by pool back to system after usage.

Virtual memory works the same whether it's a large static allocation or a large dynamic one (but you should use calloc rather than malloc + memset if you want lazily allocation).

Could you explain more about heap-allocation of the individual objects? Then we will have extra meta data to track those individual and discrete objects in memory, right? how we handle the memory fragmentation if the pool memory is not continuous?

If objects are relocatable (which requires not storing pointers to pool-allocated objects) and we really did want contiguous storage so we can iterate over the objects with good locality, it's an option to allow useof std::vector... But we'd have to store indexes instead of pointers.

reserve pool space from heap instead of global static memory for big systems.

Why does it matter?   As @msandstedt says, there's not much of a difference here in that .bss likewise involves just a virtual memory reservation on these systems until you actually write nonzero data in.

It also allow the system return the memory reserved by pool back to system after usage.

That is true, but in practice do we deallocate these pools short of shutting down the entire Matter stack?

Could you explain more about heap-allocation of the individual objects?

Sure.  The basic problem we are running into, as I understood it, is that picking the right size for some of these pools for some of these "large" systems is very hard because we have no idea up front what the workload will look like.  Maybe we transiently need 200 exchanges when we boot up to send subscribe requests to everything on the fabric, but then we'll never need that many again.  That sort of thing.
One plausible solution to that problem is to just not use a fixed-size pool at all and instead heap-allocate the objects, so the only constraint on how many we can have is the actual memory of the device.  On small devices where we would run up against these limits a lot this is not a great strategy, but on the "large" systems it seems like it should be fine.

Then we will have extra meta data to track those individual and discrete objects in memory, right?

Yes.  Well, malloc will.  We only need this sort of metadata if we need to find all the objects.  That is the only part of the whole thing that seems complicated and annoying...

how we handle the memory fragmentation if the pool memory is not continuous?

By just accepting that some amount of loss to fragmentation is fine.  In practice, on "large" systems:

Virtual memory means that physical fragmentation is really only a problem for large allocations that span many pages: if every physical page has something on it already, then you might have an issue for such an allocation.  But I don't expect us to make such large allocations in Matter.
Virtual fragmentation is almost entirely a non-issue on 64-bit systems due to the size of the address space.  On 32-bit systems it's possible to end up with significant fragmentation, but again in practice that is usually a problem if you have to make a large virtual allocation.  Which, again, we don't plan to do.

So in practice, fragmentation on "large" systems comes down to a some-percentage tax on your memory capacity.  And while a 10% or so on a constrained device's memory is a significant problem, the same thing on a "large" device is a much smaller issue, no?

Actually I think even with std::vector<PoolObj> we would still be overcomplicating things.
How about just switching to std::vector<std::unique_ptr<PoolObj>> on sufficiently capable systems?

Sizing is dynamic
No need to invalidate pointers
Doesn't require immediate redesign of code that assumes we can iterate over the pool

Actually I think even with std::vector<PoolObj> we would still be overcomplicating things.
How about just switching to std::vector<std::unique_ptr<PoolObj>> on sufficiently capable systems?

Sizing is dynamic
No need to invalidate pointers
Doesn't require immediate redesign of code that assumes we can iterate over the pool

I think this is a good idea, will pilot this solution, thanks.

I believe @bzbarsky-apple is suggesting the same thing I was: make System::TryCreate a shallow wrapper for malloc such that each individual object is malloc'ed.
The only remaining question is whether the layers need to track objects themselves. @kpschoedel's comment implies they may not. If not, can't we just map System::TryCreate to malloc and map System::Release to free? It would be really nice if we could.

We actually have two pool systems in our system, Memory pool class BitMapObjectPool defined in support/Pool.h. and Memory pool class SystemObject defined in system/SystemObject.h, we plan to finally merge these two systems.
Even though we might not need immediate access to all objects in the pool for SystemObject with latest update, but BitMapObjectPool provide interface to iterate all items within the pool.

This draft PR is only for feedback collection, based on the initial feedback, I need to reset the direction based on what we really want to achieve for pool optimization.
Close this draft PR of discussion and will post a new PR for pool optimization.


Traceback - from cleaning

Traceback (most recent call last):
File "/root/RobTheBoatBot/musicbot/bot.py", line 1695, in on_message
response = await handler(**handler_kwargs)
File "/root/RobTheBoatBot/musicbot/bot.py", line 1481, in cmd_clean
await self.delete_message(entry)
File "/usr/local/lib/python3.5/site-packages/discord/client.py", line 1147, in delete_message
yield from utils._verify_successful_response(response)
File "/usr/local/lib/python3.5/site-packages/discord/utils.py", line 219, in _verify_successful_response
raise NotFound(response, message, text)
discord.errors.NotFound: NOT FOUND (status code: 404): Unknown Message
Message was removed, and it tried to remove it again, though it did not exist afterwards. Will remove this later..

reset the command from the origin repo.


feat: add gRPC 1.66.0 release

update gRPC with release 1.66.0

:tada: This issue has been resolved in version 1.342.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Linux build fails

The linux build fails. Cake looks for src/run.py and terminates.

Did you check out the git submodules when you cloned the repository?
ie git clone --recursive

That worked. But cake fails if I do not use the release=debug setting. Specifically, munmap_chunk() fails with an invalid address. Is this expected?

Was this a build failure while running the tests?
There are some known clang bugs that currently cause cppcoro to fail under clang optimised.
https://bugs.llvm.org/show_bug.cgi?id=34897
https://bugs.llvm.org/show_bug.cgi?id=34289

Yes. I will close this issue then since it is already known...


Cleanup for PR #123 - Semantics

Comments that need to be addressed:

T = MTypeVar('T') in cdsl/ti.py is unused
in semantics of iadd_cin and iadd_carry should use bvsignext instead of bvzeroext on c_in.
Use explicit z3 bindings for smtlib.py (z3 becomes a proof dependency)

The second one doesn't sound right.
I was taking about the representation of b32 and b64 etc. They have all-zero or all-one bits.

Sorry, I misread your PR comment. Yes, the second should read: the semantics of bextend should use bvsignext instead of bvzeroext