Connect to host on multicast group with PIM protocol not igmp.

Hello,
I'm using pimd version 2.3.2.
Is this possible to connect (PIM join command) to particular host in the group?
Using mcjoin command igmp frames are sending not PIM protocol join.
Example:

mcjoin <IP_ADDRESS> -i eth0

tcpdump -vvvvXX -i eth0 -n
13:25:28.009593 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
<IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_ex { }]

Peter.

PIM is a protocol between routers, not between hosts.
Multicast senders/receivers never issue PIM messages.
Instead, a receiver must use IGMP to advertise either the local router or the LAN switches.
This is the way it works.

Like @jp-t said.
There do however exist test suites for protocol validation, like the hugely expensive Ixia ANVL.

Thank you for reply Jean-Pierre Tosoni.
One more information about my configuration. Maybe it's important. I'm using the same machine for sending igmp (mcjoin) and running pimd. Additionally there is GRE tunnel over IPSec. The hosts in the group I want to receive multicast traffic from are "on the other side" of tunnel:
|------------------ gre over IPSEC -------------------|
|                                                                       |
me                                                                router
| - multicast sender
"PIM is a protocol between routers, not between hosts."
How to make pimd to send PIM join? When pimd sends PIM joins?
Correct me if I'm wrong, please.
User makes:

mcjoin <IP_ADDRESS> -i eth0
This means advertise this machine (me) to <IP_ADDRESS> multicast group? So this frame makes router to pass multicast traffic from group to the sender (me)?
So where is the point routers send PIM join messages?

Sorry, your drawing is not clear. Could you use code formating like this:
|---demo---|
|          |

In any case, in your drawing I see only one router, so, still no need for PIM joins?
Are there routers farther down the GRE tunnel?

How to make pimd to send PIM join? When pimd sends PIM joins?
PIM join is sent when this kind of architecture is used:

   |----LAN1----|   |---WAN---|   |----LAN2----|
rx host        router1       router2         tx host

When rxhost sends IGMP JOIN then router1 sends PIM JOIN to router2 then router2 forwards multicast to router1
(well it's a bit more complex because of rendezvous points selection, but this is the driving idea)

So where is the point routers send PIM join messages?

Router1 would pass MC traffic to rxhost... if it receives MC traffic.
The point is that router1 uses JOIN to tell router2 farther on the path, that router1 needs MC traffic. If no receiver needs MC traffic, router2 will not forward it.

Thank you for explanation (driving idea) how this works.
Sorry for unclear drawing.
Below my configuration:
 |---------WAN(GRE over ipsec)---------| |------------LAN--------------|----------------|
me                                    router                       tx host1         tx host2

In any case, in your drawing I see only one router, so, still no need for PIM joins?

I think that I need to send PIM join to router to join multicast group. It does not depend on me but on existing infrastructure on the other side of the tunnel.

Are there routers farther down the GRE tunnel?

I think there are farther routers on the other side of tunnel. Does it makes difference if there are more than one router on the other side of tunnel?
I am wondering how pimd works internally? Does it receives igmp frame and then sends PIM join to proper neighbor or receives multicast groups from kernel when starts? Just wondering how to force pimd to send PIMv2 join to the other side of the tunnel?

Does it makes difference if there are more than one router on the other side of tunnel?

I believe the important thing is the position of the RendezVous point (RVP) (the host where the PIM joins are directed to)
By the way, it's important that all routers along the path are PIM-enabled.

I am wondering how pimd works internally?

Long story short answer: read the source code together with RFC's :-)
Basically, when receiving IGMP, pimd sends JOIN to the rendezvous point host. This means that the RVP must be preconfigured statically or negotiated beforehand, and that means that the BSR (which distributes RVP information) must have been negotiated earlier again.
 Moreover, if I remember correctly, the version you are using has an extra 15s delay at startup ; this delay was removed in more recent versions.

Does it receives igmp frame and then sends PIM join to proper neighbor

it joins the RVP

or receives multicast groups from kernel when starts?

no, it's pimd that configures the kernel, not the opposite.

Just wondering how to force pimd to send PIMv2 join to the other side of the tunnel?

either you configured a static RVP for your group, or a BSR message from the BSR must inform your pimd of the location of the RVP
if your pimd router is the RVP, no joins are necessary
after that, an IGMP from the rxhost must be sent to its nearest pimd router

Again, thank you for response.

Basically, when receiving IGMP, pimd sends JOIN to the rendezvous point host. This means that the RVP must be preconfigured statically or negotiated beforehand, and that means that the BSR (which distributes RVP information) must have been negotiated earlier again.

I have Rendezvous Point configured statically but none of packets are send there (RVP IP).
Below log from pimd. Pimd is on the same machine that mcjoin is.
> mcjoin -d -j <IP_ADDRESS> -i tunnel1

> pimd -c /etc/pimd.conf -digmp_proto,pim_jp,kernel,pim_register
16:14:00.504 Send IGMP Membership Query     from <IP_ADDRESS> to <IP_ADDRESS>
16:14:00.504 SENT    36 bytes IGMP Membership Query     from <IP_ADDRESS>    to <IP_ADDRESS>
16:14:00.504 query_groups(): Sending IGMP v3 query on wpg-tun1
16:14:00.504 Send IGMP Membership Query     from <IP_ADDRESS> to <IP_ADDRESS>
16:14:00.504 SENT    36 bytes IGMP Membership Query     from <IP_ADDRESS>    to <IP_ADDRESS>
16:14:00.504 Received IGMP Membership Query     from <IP_ADDRESS> to <IP_ADDRESS>
16:14:05.509 For src <IP_ADDRESS>, iif is 0, next hop router is <IP_ADDRESS>: NOT A PIM ROUTER
16:14:06.657 Received IGMP v3 Membership Report from <IP_ADDRESS> to <IP_ADDRESS>
16:14:06.657 accept_membership_report(): IGMP v3 report, 16 bytes, from <IP_ADDRESS> to <IP_ADDRESS> with 1 group records.
16:14:06.657 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:06.657 Set delete timer for group: <IP_ADDRESS>
16:14:06.657 SM group order from  <IP_ADDRESS> (*,<IP_ADDRESS>)
16:14:06.657 find_route: Not PMBR, return NULL
16:14:07.081 Received IGMP v3 Membership Report from <IP_ADDRESS> to <IP_ADDRESS>
16:14:07.081 accept_membership_report(): IGMP v3 report, 16 bytes, from <IP_ADDRESS> to <IP_ADDRESS> with 1 group records.
16:14:07.081 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:07.081 Set delete timer for group: <IP_ADDRESS>
16:14:07.081 find_route: Not PMBR, return NULL
16:14:09.253 Received IGMP v3 Membership Report from <IP_ADDRESS> to <IP_ADDRESS>
16:14:09.253 accept_membership_report(): IGMP v3 report, 40 bytes, from <IP_ADDRESS> to <IP_ADDRESS> with 4 group records.
16:14:09.253 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:09.253 Set delete timer for group: <IP_ADDRESS>
16:14:09.253 find_route: Not PMBR, return NULL
16:14:09.253 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:09.253 Set delete timer for group: <IP_ADDRESS>
16:14:09.253 Not creating routing entry for LAN scoped group <IP_ADDRESS>
16:14:09.253 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:09.253 Set delete timer for group: <IP_ADDRESS>
16:14:09.253 Not creating routing entry for LAN scoped group <IP_ADDRESS>
16:14:09.253 accept_group_report(): igmp_src <IP_ADDRESS> ssm_src <IP_ADDRESS> group <IP_ADDRESS> report_type 34
16:14:09.253 Set delete timer for group: <IP_ADDRESS>
16:14:09.253 Not creating routing entry for LAN scoped group <IP_ADDRESS>
16:14:11.025 Received IGMP v3 Membership Report from <IP_ADDRESS> to <IP_ADDRESS>
16:14:11.025 accept_membership_report(): IGMP v3 report, 16 bytes, from <IP_ADDRESS> to <IP_ADDRESS> with 1 group records.
16:14:11.301 Received IGMP v3 Membership Report from <IP_ADDRESS> to <IP_ADDRESS>
16:14:11.301 accept_membership_report(): IGMP v3 report, 16 bytes, from <IP_ADDRESS> to <IP_ADDRESS> with 1 group records.
^C16:14:13.283 pimd version 2.3.2 exiting.

> tcpdump -vvvvXX -i wpg-tun1 -n '(ip proto 103) or ((ip proto 2) and (ip[20] == 0x14) or igmp)'
16:14:00.504269 IP (tos 0xc0, ttl 1, id 5806, offset 0, flags [none], proto IGMP (2), length 36, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp query v3

16:14:06.657596 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_ex { }]

16:14:07.081583 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_ex { }]

16:14:09.253588 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 64, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 4 group record(s) [gaddr <IP_ADDRESS> is_ex { }] [gaddr <IP_ADDRESS> is_ex { }] [gaddr <IP_ADDRESS> is_ex { }] [gaddr <IP_ADDRESS> is_ex { }]

16:14:11.025582 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_in { }]

16:14:11.301574 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_in { }]

16:14:13.283741 IP (tos 0x0, ttl 1, id 85, offset 0, flags [none], proto PIM (103), length 46)
    <IP_ADDRESS> > <IP_ADDRESS>: PIMv2, length 26
	Hello, cksum 0x345c (correct)

16:14:13.305576 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 56, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 3 group record(s) [gaddr <IP_ADDRESS> to_in { }] [gaddr <IP_ADDRESS> to_in { }] [gaddr <IP_ADDRESS> to_in { }]

16:14:13.701606 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 56, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 3 group record(s) [gaddr <IP_ADDRESS> to_in { }] [gaddr <IP_ADDRESS> to_in { }] [gaddr <IP_ADDRESS> to_in { }]

As you can see from above there is no pim join. pim sends igmp messages to <IP_ADDRESS>.
I think the problem is that receiver is on the same host pimd is working. How can I set PMBR in pimd.conf? Maybe this is the problem:
16:14:06.657 find_route: Not PMBR, return NULL

I think the problem is that receiver is on the same host pimd is working

OK, I overlooked that point. Since the receiver is in the router, then this computer does not need to forward anything from one port to another => no multicast routing (only receiving) => pimd is NOT used. So, no PIM JOIN.
Your computer must be seen as a simple host, so it will send a simple IGMP join (not PIM) to the next router on the far end of the tunnel -- and that router will issue a PIM JOIN farther if needed.
Indeed, on your tcpdump you can see the IGMP JOIN GROUP <IP_ADDRESS> going out encapsulated in the tunnel. All is going as it should.
Hints:

I am not sure that the packet is received on the other end of the tunnel though, because the TTL for the tunnel is only 1. So the tunnel cannot cross any routers.

Check that the RVP is ping-able from the router

check that the next router is multicast-enabled

run mcjoin on another computer on the router's LAN and look for PIM joins in the tunnel

check that the multicast sender uses a large TTL, since this is the most common cause of failures.

"jp-t" -> Thank you for reply it clarify a lot.
I added tunnel with client to the configuration, it looks like this:
               <IP_ADDRESS>                        <IP_ADDRESS>
| --vpn(internet)--|-- WAN(GRE over ipsec)(internet)--| |------LAN------|------LAN------|
client           pimd                                router         mcast-tx1        mcast-tx2
<IP_ADDRESS>       <IP_ADDRESS>

The pimd do not see IGMP join from client (<IP_ADDRESS>).
Virtual Interface Table ======================================================
Vif  Local Address    Subnet              Thresh  Flags      Neighbors
---  ---------------  ------------------  ------  ---------  -----------------
  0  public-ip        public-ip                1  DISABLED
  1  <IP_ADDRESS>     <IP_ADDRESS>/30          1  PIM        <IP_ADDRESS>
  2  <IP_ADDRESS>        <IP_ADDRESS>/32             1  DR NO-NBR
  3  <IP_ADDRESS>     register_vif0            1

 Vif  SSM Group        Sources

Multicast Routing Table ======================================================
--------------------------------- (*,*,G) ------------------------------------
Number of Groups: 0
Number of Cache MIRRORs: 0
------------------------------------------------------------------------------

pimd.conf:
phyint eth0 disable
# multicast resource tunnel
phyint tun1 dr-priority 10
# client tunnel
phyint <IP_ADDRESS> enable

rp-candidate <IP_ADDRESS>
rp_address <IP_ADDRESS>

I checked your hins it looks correct.

The pimd do not see IGMP join from client (<IP_ADDRESS>).

What do you mean more precisely (so I can know the point where it breaks) :

the IGMP frame does not appear on a tcpdump running on the <IP_ADDRESS> interface of "pimd" computer?
or, the log messages from the pimd daemon do not indicate it received IGMP from "client"?
or, the pimd daemon does not react to IGMP from client?
Please check all three cases.

can you at least ping <IP_ADDRESS> from "client" ?
ping <IP_ADDRESS>
can you try the following on the "client"
(assuming Linux) ping -t 1 <IP_ADDRESS>
(assuming Windows) ping -i 1 <IP_ADDRESS>
Does it work as well?

Good questions, I'm not really following either.  PIM is protocol independent multicast, which means the unicast routing underneath must be set up already, unlike DVMRP (mrouted).  So OSPF, RIP, BPG, or static routes must exist to enable e.g. ping between client and multicast sender.

What do you mean more precisely (so I can know the point where it breaks) :

the IGMP frame does not appear on a tcpdump running on the <IP_ADDRESS> interface of "pimd" computer?

The frame appears on <IP_ADDRESS> computer.
Client:
root@client:~/scripts# ifconfig
 . . .
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet <IP_ADDRESS>  netmask <IP_ADDRESS>  destination <IP_ADDRESS>
        inet6 fe80::ba50:a322:8088:668b  prefixlen 64  scopeid 0x20<link>
. . .
root@client:~/scripts# mcjoin <IP_ADDRESS> -i tun0
joined group <IP_ADDRESS> on tun0 ...
^C
Received total: 0 packets
root@client:~/scripts# _

Server:
root@serv:~# ifconfig
 . . .
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
         inet addr:<IP_ADDRESS>  P-t-P:<IP_ADDRESS>  Mask:<IP_ADDRESS>
 . . .

root@serv:~# tcpdump -vvvv -i tun0 -n
tcpdump: listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
18:02:38.974523 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_ex { }]
18:02:39.166443 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_ex { }]
18:02:44.792110 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_in { }]
18:02:45.752376 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto IGMP (2), length 40, options (RA))
    <IP_ADDRESS> > <IP_ADDRESS>: igmp v3 report, 1 group record(s) [gaddr <IP_ADDRESS> to_in { }]
^C
4 packets captured
4 packets received by filter
0 packets dropped by kernel
root@serv:~# _

or, the log messages from the pimd daemon do not indicate it received IGMP from "client"?

Correct. No info in logs that frame is received.

or, the pimd daemon does not react to IGMP from client?
Please check all three cases.

can you at least ping <IP_ADDRESS> from "client" ?
ping <IP_ADDRESS>

Yes I can.

can you try the following on the "client"
(assuming Linux) ping -t 1 <IP_ADDRESS>

It works:
root@client:~/scripts# ping -t1 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=64.2 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=64.6 ms
64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=64 time=64.4 ms
64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=64 time=64.0 ms
64 bytes from <IP_ADDRESS>: icmp_seq=5 ttl=64 time=64.7 ms
^C
--- <IP_ADDRESS> ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 64.079/64.446/64.743/0.406 ms
root@client:~/scripts# _

(assuming Windows) ping -i 1 <IP_ADDRESS>
Does it work as well?

Yes it does work. I triple check it . . . :)

Your config file is incorrect in several ways.

the multicast group "<IP_ADDRESS>" in the config file does not match the group "<IP_ADDRESS>" used by the client. (but, maybe you have another RP for this group? anyway "pimd" computer will not serve this group)
the "rp-address" keyword is spelled with an hyphen, not an underscore.
the "rp-address" expects a local address as its mandatory first argument and group as optional second argument (warning, it's the opposite for rp-candidate)
the groups should specify a masklen (not mandatory, but otherwise one must guess at the default masklen value)


[new page] JSON query results

Originally: https://github.com/influxdb/influxdb.com/issues/186
Document format, syntax, and meaning of the JSON query results returned from SELECT, SHOW, CREATE, DROP, ALTER, SET queries.

Closing old issue.


iOS incorrectly enables dark mode for dark keyboard appearance

I created a new issue for this, to make it easier to overview.
Basically, the SwiftUI keyboard can't tell the difference between a dark appearance text field and running the app in dark mode. This means that dark appearance text fields get the dark mode colors.
This looks really strange, which you can see in the demo keyboard. However, I should be able to get the raw information from the text document proxy instead.
I'll add a before and after image if I manage to solve this.

I don't think it's possible to fix this, since the color scheme of a dark appearance text field is dark, even though the system uses a light color scheme. I am certain of this now, since the new color assets are affected as well.
To Mae the best of this, I have made the dark appearance color assets non-adaptive and given them the values from light mode. It's not perfect, but better than what it was.

@ibayramli2001 @amirshane Here is the original issue.


Ignore error when peer access is already enabled

Cherry-pick from #2644. This PR fixes the error when peer access is enabled by some external libraries (cuFFT in the case of #2644). The CUDARuntimeError should be silently ignored in this case.

LGTM
Jenkins, test this please

Jenkins CI test (for commit c033e35e5ad670e805a26271fca099c923ae6e8e, target branch master) succeeded!

As #2899 has just been merged, could you resolve conflict?

@niboshi Done, PTAL 🙂

Thanks!
Jenkins, test this please

Jenkins CI test (for commit 0dc45917ac4fb6d810f3f02bc8015e14b5094552, target branch master) succeeded!


Can you guide on how to write a function to load fbx models?

This repo has been of great use to me. But only problem is that I have models in fbx files. I know the way to convert  fbx models to json format and I have converted some of them and used with blueprint3d. They are getting loaded but I feel some of the content is missed. May be I am not converting properly. Additionally there are lot of models, so I want to avoid to use JSONLoader.

Hey, I am trying the same thing. I want to use FBX models which I  created.  Can anyone guide me with that?

Hi, @sah1l and @jalajshah!
Three.js has the FBXLoader and you can use it as shown in the example https://threejs.org/examples/webgl_loader_fbx.html.
But there is a problem: the bluprint3d has not been updated for a long time and has not the FBXLoader. You can update the bluprint3d to use the last version of the three.js and the FBXLoader.

What an amazing project.. wish the author will continue the good work!

Hi, @sah1l and @jalajshah!
Three.js has the FBXLoader and you can use it as shown in the example https://threejs.org/examples/webgl_loader_fbx.html.
But there is a problem: the bluprint3d has not been updated for a long time and has not the FBXLoader. You can update the bluprint3d to use the last version of the three.js and the FBXLoader.

Can you please tell me what to update - three.js file is not there in the project, three.min.js is there


I am using the FlutterAccessibilityService.accessStream.firstWhere function and after some time my app has started to hang alot. Can you explain what is going wrong. May be the stream is not getting destroyed. But i did not find any option to destroy it

Any steps to reproduce please


Mineunit update

Update for mineunit cli runner

Info is nice but spamming same stuff multiple times is not. Also maybe all reports could be in single comment even while sources are different.

Okayish but too many comments.

Even better with details hidden, this is not something I want to always see first


Wpvulndb license

Hi,
Would it be possible to list our API usage requirements along side your source code licensing, please?
Something like The wpvulndb.com API is free for non-commercial use, but requires payment and permission for any potential commercial use.
Many thanks,
Ryan

Yes of course, just updated the readme !

Awesome, thank you! :)


windows jsfiddle downloads broken with 0.34.3

user on windows visits site:

https://www.electronjs.org/fiddle

user clicks download button for windows
URL 404's --> no files to download

possible solutions:

upload windows binaries
redirect to 0.34.2 for now

mac intel/arm builds as well

Fixed by #455.


chore(grunt): set grunt-cli as a dependency

Well, it would work for TravisCI but what about regular developers? Now you would find yourself installing grunt-cli locally even if you have to have it installed globally for regular development.
What is the reasoning here? What would be the advantage of the proposed change?

running grunt will still work if you've got grunt-cli installed
As a potential contributors of a library, I follow those steps:

clone repo
npm install
npm test

So in this case, it's giving me an error.
Because I'm not familiar with grunt, I install globally grunt instead of grunt-cli.
I keep getting an error and start feeling frustrated. ;)
I just think It will make it more friendly to new comers

running grunt will still work if you've got grunt-cli installed

This is my point, I will have it installed twice now :-)

I just think It will make it more friendly to new comers

I'm not sure. Here you've made just one command to work. But to be able to contribute effectively you will need more commands (linting, running tests in tdd mode etc.). So it helps with the case of someone who jumps in and want to test a small fix. Which is an important use case, I agree. But at the same time we would see a pb on TravisCI.
I'm on the fence with this one, will let others decide

But to be able to contribute effectively you will need more commands

We can still add more scripts (should I do it on this PR?)

But at the same time we would see a pb on TravisCI.

Which problem?

I'm on the fence with this one, will let others decide

:+1:  cool

We can still add more scripts (should I do it on this PR?)

Personally I'm not big fan of supporting several ways of building a project.

I'm ambivalent as well - it looks like grunt supports this situation, but it generally has been recommended to install it globally since if any other library uses grunt, it then supports a common CLI via global executable whereas this movement would add duplication of the CLI.
I think I'm leaning a little towards no on this PR as a result.

fair enough ;)
I kind of like to have a one command setup: npm install
Feel free to close it then!

Closing as per discussion


Input events in the toolbar trigger window position and size changes

Description
When using macOS 11 style windows, click events in the toolbar still trigger window changes even if they are located over a UI element. This includes double-clicking changing the window size, and click-and-drag moving the window.
Steps To Reproduce

Run the example app
Navigate to any page in the sidebar with UI elements in the toolbar. The "Toolbar" page is a good option
Double click any UI element in the toolbar and the window will resize
With the window un-maximized, click and drag a UI element in the toolbar. The window will move with your cursor

Expected behavior
Input events on UI elements should take priority and not trigger window resize or move events, as in native and even most non-native applications.
Screenshots
Here is an example of double click triggering window resize in the example app:
https://user-images.githubusercontent.com/1316184/201949806-4bfe746f-6570-4d07-9148-2b00c12b0d71.mov
For comparison, here is the behavior of a similar element in the macOS notes application:
https://user-images.githubusercontent.com/1316184/201949986-f12991de-066b-4347-8805-18af97f2e5fc.mov
Logs
N/A.
Suggestion
The root cause seems to be that the way the runner app handles the macOS 11 style window: the titlebar is not removed but just made transparent, and therefore still receives input. Setting self.titlebarAppearsTransparent = false in MainFlutterWindow lets us see this:

One possible way to fix this would be to remove the titlebar entirely and handle window movement internally with a package like bitsdojo_window. This would likely require changes to the Toolbar and/or MacosScaffold widgets to attach the required listeners.
Related
#316 includes these issues along with an unrelated button styling issue

I think it is very inconvenient behavior. GroovinChip Have you any plan about it?

I think it is very inconvenient behavior. Have you any plan about it? @GroovinChip

Duplicate of #308

Closing as duplicate of #308, as noted.


Python - Module + Attribute Error - Face Detection Azure AI SDK - 04-face-service

Detecting faces in an Image - The Issue
For reference to the specific exercise being done, please see the following. For reference to the detect-people.py file being executed, please see:
from dotenv import load_dotenv
import os
from array import array
from PIL import Image, ImageDraw
import sys
import time
from matplotlib import pyplot as plt
import numpy as np

# import namespaces
import azure.ai.vision as sdk

def main():
    global cv_client

    try:
        # Get Configuration Settings
        load_dotenv()
        ai_endpoint = os.getenv('AI_SERVICE_ENDPOINT')
        ai_key = os.getenv('AI_SERVICE_KEY')

        # Get image
        image_file = 'images/people.jpg'
        if len(sys.argv) > 1:
            image_file = sys.argv[1]

        # Authenticate Azure AI Vision client
        cv_client = sdk.VisionServiceOptions(ai_endpoint, ai_key)

        # Analyze image
        AnalyzeImage(image_file, cv_client)

    except Exception as ex:
        print(ex)

def AnalyzeImage(image_file, cv_client):
    print('\nAnalyzing', image_file)

    # Specify features to be retrieved (PEOPLE)
    analysis_options = sdk.ImageAnalysisOptions()

    features = analysis_options.features = (
        sdk.ImageAnalysisFeature.PEOPLE
    )

    # Get image analysis
    image = sdk.VisionSource(image_file)

    image_analyzer = sdk.ImageAnalyzer(cv_client, image, analysis_options)

    result = image_analyzer.analyze()

    if result.reason == sdk.ImageAnalysisResultReason.ANALYZED:
        # Get people in the image
        if result.people is not None:
            print("\nPeople in image:")

            # Prepare image for drawing
            image = Image.open(image_file)
            fig = plt.figure(figsize=(image.width/100, image.height/100))
            plt.axis('off')
            draw = ImageDraw.Draw(image)
            color = 'cyan'

            for detected_people in result.people:
                # Draw object bounding box if confidence > 50%
                if detected_people.confidence > 0.5:
                    # Draw object bounding box
                    r = detected_people.bounding_box
                    bounding_box = ((r.x, r.y), (r.x + r.w, r.y + r.h))
                    draw.rectangle(bounding_box, outline=color, width=3)

                    # Return the confidence of the person detected
                    print(" {} (confidence: {:.2f}%)".format(detected_people.bounding_box, detected_people.confidence * 100))

            # Save annotated image
            plt.imshow(image)
            plt.tight_layout(pad=0)
            outputfile = 'detected_people.jpg'
            fig.savefig(outputfile)
            print('  Results saved in', outputfile)

    else:
        error_details = sdk.ImageAnalysisErrorDetails.from_result(result)
        print(" Analysis failed.")
        print("   Error reason: {}".format(error_details.reason))
        print("   Error code: {}".format(error_details.error_code))
        print("   Error message: {}".format(error_details.message))

if __name__ == "__main__":
    main()

When I execute the Python command:
python detect-people.py
or in my case:
python3 detect-people.py
I receive the following error:
module 'azure.ai.vision' has no attribute 'VisionServiceOptions'
Related to issues from the code input for Authentication of the SDK at
 # import namespaces
 import azure.ai.vision as sdk

Attempting to Diagnose the Issue
I execute detect-people.py in my zsh shell from the folder that I cloned the repository. I've gone into my file path where Python is located to locate the frame work and all I can find are the Python modules related to Azure AI 102 Modules for Analyze Images Exercise 1, which are azure.ai.vision.imageanalysis modules. I opened that configuration file and compared it to how the detect-people.py file configures authentication for Azure and I literally cannot find an azure.ai.vision module configuration file - my vision folder goes straight to a subsequent imageanalysis folder. Therefore, where my Python interpreter attempts to authenticate the SDK for access to the "VisionServiceOptions" features, it cannot. The authentication of the SDK is supposed to occur here:
# Authenticate Azure AI Vision client
cv_client = sdk.VisionServiceOptions(ai_endpoint, ai_key)

I have compared the configuration file from azure.ai.vision.imageanalysis to see if I can make something analogous to that to gain access to the 'VisionServiceOptions' features, but then I look into my actual folders and see no code for 'VisionServiceOptions', so even if I rewrote the script to pull from 'imageanalysis', I wouldn't have any 'VisionServiceOptions' features to do the face detection. I've also searched to see if the Face Detection features may be named something different so I pull something different from azure.ai.vision/sdk
Examining Correlation with an Open and Related Issue
In a previous issue that was raised, I'm unsure if the issue with installing 'azure-ai-vision' is the root of the issue. When attempting to execute pip install azure-ai-vision==0.15.1b1, I receive the following:

ERROR: Could not find a version that satisfies the requirement azure-ai-vision==0.15.1b1 (from versions: none)
ERROR: No matching distribution found for azure-ai-vision==0.15.1b1

In another raised issue that is still open (#10), I agreed, at the time, with the original poster that the solution may be to use the command:
pip install azure-ai-vision-imageanalysis

However, I believe only being able to execute this command successfully may be why I'm experiencing the problem that I'm having at the moment - I never installed the VisionServiceOptions. Please help, I have a deadline to complete my training in this within a week!

This seems to be an issue in your local setup, not the lab environment. Unfortunately, we can't provide support for every individual setup.


firebase deploy issue

I deployed a small application created by react, then I changed my mind and recreated the app with angular2 then deploye it to the same hosting. I did it over and over again but still what am seing is the version of the web application created by the react. I don't see any error though.

Not sure if it will fix, but I would try making sure you clear application data in Chrome... maybe caching?  Using developer tools go to the Application tab and clear all site data.


Make custom library fixed in draw.io online and desktop

Is there any possibility to put a customized library with my own shapes to the left shape bar?
Every time I create a new diagram I have to add my customized library to the shape bar.

Voting for this feature as well, since I am getting tired a bit from constantly loading up libraries (although it's fast) but I have to turn off my PC from time to time, or close the draw.io for desktop and reloading the libraries each and every time is becoming a burden. Especially if you have tens of custom libraries (so you don't have to search or scroll through the shapes every time to find the specific one you are looking for).

I'm new to Diagrams.net.  It looks like if I open a library and refresh the browser, then the library is forgotten and has to be opened again.  Is that expected behavior?


Error parsing simple root-level string as JSON

I'm trying to create a PACT consumer test for a provider that returns a simple String as it's response body with a Content-Type of application/json.  I am declaring my PACT fragment as follows:
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json");

        builder
                .uponReceiving("a request for a simple string")
                    .path("/provider/uri")
                    .method("GET")
                .willRespondWith()
                    .status(STATUS_OK)
                    .headers(headers)
                    .body(PactDslJsonRootValue.stringType())
                .toFragment();

However, when I run this junit consumer test (as a consumer) I receive the following error:
groovy.json.JsonException: false not parsed properly

The current character read is 'f' with an int value of 102
false not parsed properly
line number 1
index number 1
fMqERmSJkswiAwHKYlbV
.^

If I change the Content-Type to text/plain the unit test will run and the PACT contract will be created, however it will obviously fail when run against our provider.  I have also tried creating the fragment using a String literal as the body (rather than the type matcher) with the same result.
Is this a bug or is there another way to test this type of provider?
Thanks in advance!
Dave

Hi Dave, could you provide the stack trace or debug logs?

Don't worry, I have confirmed the behaviour and it is a defect.

OK - thanks @uglyog - I really appreciate you looking into this for me so quickly!!
Let me know if you do need anything else from me.


When opening multiple windows, closing one will cause other windows crash. This is a "design limitations" according to deno binding. We need to make it looks better at least.

When opening multiple windows, closing one will cause other windows crash.

This is a "design limitations" according to deno binding(I can not find where the issue is now).
releated: https://github.com/webview/webview_deno/issues/108

This issue seems wont't happen for no reason, no webview-nodejs behaves same as webview_deno: when opening two windows, closing one will also make the other closed, no hanging happens. We'll watching it until it happens again or webview_deno has a new solution.


Can't import API

APIM-CLI version
1.14.3
API-Management version
7.7.20220228
Bug description
We exported an API, then changed the state from published to unpublished.
Then we imported the API and nothing happens.
We did the same command on the v1.14.0 ans it works fine but on the latest version it didn't work.
Steps to reproduce

export an api with the state published
modify the config.json :

"state" : "unpublished",
3. import the api
Relevant log output
2024-02-12 15:48:13,467 [APIManagerCLI] INFO : API-Manager CLI: 1.14.3
2024-02-12 15:48:13,467 [APIManagerCLI] INFO : Module: API - I M P O R T  (1.14.3)
2024-02-12 15:48:13,482 [EnvironmentProperties] DEBUG: Trying to load environment properties from file: env.properties ... not found.
2024-02-12 15:48:14,277 [APIMHttpClient] DEBUG: API Manager CLI http client timeout : 30000
2024-02-12 15:48:14,352 [RestAPICall] DEBUG: Http verb:POST and URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/login
2024-02-12 15:48:14,787 [RestAPICall] DEBUG: Http verb:GET and URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/currentuser
2024-02-12 15:48:14,952 [RestAPICall] DEBUG: Http verb:GET and URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/config
2024-02-12 15:48:15,042 [APIManagerAdapter] INFO : Successfully connected to API-Manager (7.7.20220228) on: https://apimanager-support-interne-int.serv.cdc.fr:443
2024-02-12 15:48:15,057 [Utils] DEBUG: Handling JSON Configuration file: C:\Users\caxwayac-e\Documents\export_apimcli\api-manager\INT\support-interne\apis-interne-int.di.cdc.fr\healthcheck_rng\api-config.json
2024-02-12 15:48:15,177 [APIManagerOrganizationAdapter] DEBUG: Load organizations from API-Manager using filter: OrgFilter [name=SERVICES CENTRAUX, id=null]
2024-02-12 15:48:15,177 [APIManagerOrganizationAdapter] DEBUG: Load organization with URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/organizations?field=name&op=eq&value=SERVICES+CENTRAUX
2024-02-12 15:48:15,177 [RestAPICall] DEBUG: Http verb:GET and URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/organizations?field=name&op=eq&value=SERVICES+CENTRAUX
2024-02-12 15:48:15,357 [APISpecificationFactory] INFO : Reading API-Definition (Swagger/WSDL) from file: C:\Users\caxwayac-e\Documents\export_apimcli\api-manager\INT\support-interne\apis-interne-int.di.cdc.fr\healthcheck_rng\Rennaud_healthcheck.json (absolute path)
2024-02-12 15:48:15,372 [APIManagerAdapter] DEBUG: Closing cache ...
2024-02-12 15:48:15,372 [RestAPICall] DEBUG: Http verb:DELETE and URI: https://apimanager-support-interne-int.serv.cdc.fr:443/api/portal/v1.4/login

Hi @Rennaud, Can you please confirm the jdk version

Hi @rathnapandi ,
Here the info of the Java used :
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
To get the info, I just put the command line "java -version" into the script apim.sh

Hi @Rennaud,
Can you please try it with JRE 11?

Hi @rathnapandi ,
Yes, the JRE was the issue. I did use the JRE 11 and now it works fine.
Regards,
Thanks for your help


Rasa X story flow chart currently shows None instead of the intent name if responses are not defined in the domain

Description of Problem: When responses are not defined in the domain (because they are defined in an NLG server for example), Rasa X displays None which makes it hard to read.

Overview of the Solution: If no responses are found, it would be better to display the intent name instead.

Thanks for submitting this feature request 🚀 @TyDunn will get back to you about it soon! ✨

Hi @nbeuchat. This is a good point. I added it to the backlog of one of our engineering squads 👍

Hi @TyDunn! Sweet, thanks!

I can't see any intent names whatsoever either. All my responses are listed as actions in the domain and Rasa X can find my domain file. However, it gives me erros like these of each and every intent even though it's listed in the domain under intents:
Found intent 'leave' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/rasa/shared/utils/io.py:93: UserWarning: Issue found in '/var/folders/d9/bfhm6_nj3t71_6293tgcddvc0000gn/T/tmp9xm1fzxn':
Found intent 'resume' in stories which is not part of the domain.
  More info at https://rasa.com/docs/rasa/stories

Thank you for raising this issue about Rasa X. We decided to stop supporting the Community Edition (free version) of ‘Rasa X’ (see more info here: https://rasa.com/blog/rasa-x-community-edition-changes/). That’s why we’ve closed your issue. We suggest that Rasa Enterprise customers raise the issue with our customer support team if they haven’t done so already.


any update for using nvdiffrec?

dear author,
since you've said you may try some new rendering methods in the future work like nvdiffrec, I'm curious if there's any progress you can share with us :)
Thanks

Hi, we find that mesh extracted from nvdiffrec may not be water-tight in other tasks, so we have not spent time on it.


Add an option to disable prometheus

Is your feature request related to a problem? Please describe.
There is need to add option to enable/disable prometheus
https://github.com/kube-vip/kube-vip/issues/415
Describe the solution you'd like
Setting prometheus_server to empty string is OK:
        - name: prometheus_server
          value: ""

Describe alternatives you've considered

add a new flag enable_prometheus_server with default value "true" to keep backward compatibilty.
OR
add a new flag enable_prometheus_server with default value "false" to keep prometheus disabled by default because kube-vip pods are:
-- using host network
-- have an wide permissions: NET_ADMIN, NET_RAW, SYS_TIME
So running extra services inside such pods and exposing this services it's super strange, expanding security impact surface and have high potential in security vulnerabilities.

Additional context

PR welcome

can be achieved by setting prometheus_server: “”


fix: reseed now consistent between functions

:tada: This PR is included in version 3.4.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


React 17 support needed

Looking to use this, but it looks like it's dependency locked for react 15/16 only.
Used --force on install for now. Hope nothing breaks :)
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>|| ^16.0.0" from<EMAIL_ADDRESS>

It should work with React 17. Did it ?
I'll change the package.json to include it :slightly_smiling_face:

It did, but some warnings about componentDidUpdate being deprecated in the future. Basically lifecycle warnings

Hi,
I got a similar error:
npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/react
npm ERR<EMAIL_ADDRESS>from the root project

Same problem here. No React 18 support


Question: How to use ormar with alembic

Thanks for your work on the library!
One question that came to my mind, that I don't really find in the docs, is that how should this be used with alembic?
I mean, at least the --autogenerate produces some really weird results for me.
Disregarding the autogenerate for alembic, should one use ormar.* types when creating the tables:
def upgrade():
    alembic.op.create_table("table", sa.Column("column", ormar.Integer, primary_key=True), sa.Column("name", ormar.String(max_length=50)))

Some examples in the documentation would be nice.

I dug around for quite some time, and found out why the alembic autogenerate didn't work.
I hadn't imported my models in the alembic env.py so that the metadata would include all the tables to be created.
This could maybe be updated in the documentation, that if the metadata instantiation and models are in separate modules, they should be imported so alembic works correctly.

Hi, Thanks for the suggestion.
Will try to update the docs in the nearest time.
There are areas that are covered by other libraries docs (like alembic/fastapi/pydantic/sqlalchemy) and during creation of docs I skipped those due to limited time.
But I guess migrations are so important that it should be expanded in the docs.
A quick solution/example should be something similar to:
When you have application structure like:
-> app
    -> alembic (initialized folder - so run alembic init inside app folder)
    -> models (here are the models)
      ->__init__.py
      ->my_models.py

Your env.py file (in alembic folder) can look something like:
from logging.config import fileConfig
from sqlalchemy import create_engine

from alembic import context
import sys, os

# add app folder to system path (alternative is running it from parent folder with python -m ...)
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, myPath + '/../../')

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config

# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)

# add your model's MetaData object here (the one used in ormar)
# for 'autogenerate' support
from app.models.my_models import metadata
target_metadata = metadata

# set your url here or import from settings
URL = "sqlite:///test.db"

def run_migrations_offline():
    """Run migrations in 'offline' mode.

    This configures the context with just a URL
    and not an Engine, though an Engine is acceptable
    here as well.  By skipping the Engine creation
    we don't even need a DBAPI to be available.

    Calls to context.execute() here emit the given string to the
    script output.

    """
    context.configure(
        url=URL
        target_metadata=target_metadata,
        literal_binds=True,
        dialect_opts={"paramstyle": "named"},
    )

    with context.begin_transaction():
        context.run_migrations()

def run_migrations_online():
    """Run migrations in 'online' mode.

    In this scenario we need to create an Engine
    and associate a connection with the context.

    """
    connectable = create_engine(URL)

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata
        )

        with context.begin_transaction():
            context.run_migrations()

if context.is_offline_mode():
    run_migrations_offline()
else:
    run_migrations_online()

you can also include/exclude specific tables with include_object parameter passed to context.configure. That should be a function returning True/False for given objects.
A sample function excluding tables starting with data_ in name unless it's 'data_jobs':
def include_object(object, name, type_, reflected, compare_to):
    if name and name.startswith('data_') and name not in ['data_jobs']:
        return False

    return True

And you pass it into context like (both in online and offline):
context.configure(
        url=url,
        target_metadata=target_metadata,
        literal_binds=True,
        dialect_opts={"paramstyle": "named"},
        include_object=include_object
    )

Thanks for the thorough answer. I think the alembic migrations never get the attention they deserve in the documentations. It required at least on my end a bit more work than just "import the metadata" to get things up and running.
Even just this answer in the docs, would probably improve things a lot.

That's exactly what I did - included this answer in documentation, thanks for the suggestion again!
If you like ormar please star the repo and help to spread the knowledge about it :)


Create master/compute substacks and remove CloudFormation Init when bootstrapping compute fleet

Changes
Here is a summary of the changes in this PR, commit by commit:
Extract master server and compute fleet in separate CFN substacks
This only extracts the head node and compute fleet related resources to separate CloudFormation nested stacks. The reason behind this is that it simplifies the changes applied in the following commits. No functional changes are expected as part of this commit.
Some of the resources that are specific to compute nodes or head node (such as subnets) are still defined in the main stack in order to avoid that other dependent resources (e.g EFSSubstack) have to wait longer than actually needed.

Explicitly pass IAM role when calling cfn-init/signal commands
If no credentials are specified, AWS CloudFormation checks for stack membership and limits the scope of the call to the stack that the instance belongs to.
Explicitly passing the instance role name to cfn-init and cfn-signal calls.
When this gets released we need to update the ParallelClusterInstancePolicy in the docs by adding "cloudformation:SignalResource".

Update uploadTemplate script to include master and compute-fleet substacks
Simple update to the uploadTemplate script to account for the new substacks.

Add ASG name to the stacks output
Adding ASG to stack output so that it can be retrieved from there rather than parsing through stack resources.

Convert compute-fleet-substack and master-server-substack to YAML
Used cfn-flip and the following commands for the conversion:

cfn-flip -y -c master-server-substack.cfn.json master-server-substack.cfn.yaml
cfn-flip -y -c compute-fleet-substack.cfn.json compute-fleet-substack.cfn.yaml

Add formatting check to tox/travis for YAML CloudFormation docs
Applied formatting checks to the new YAML files.

Add aws-parallelcluster-node-type tag to cluster instances
Name tag is more likely to be changed by the user, hence adding a new tag to identify the node type.

Make pcluster CLI commands compatible with the master/compute substacks

Use EC2 API rather than CloudFormation and ASG in order to retrieve cluster nodes (master and compute). The new logic filters nodes based on the new aws-parallelcluster-node-type tag and has fallback behaviors to preserve backward compatibility.

integ-tests: minor changes to make them compatible with new templates
Update logic that retrieves ASG name and master instance ip.

compute-fleet: move generation of bootstrap files to userdata
Move the generation of files needed in the bootstrap phase from the cfninit metadata to userdata

Remove CloudFormation Init from compute fleet userdata
Replace cfninit logic with plain userdata in ComputeFleet

Append user-data output to the EC2 console log
Add userdata logging to the console output so that in case the user is unable to ssh into the instance some trouble-shooting can be performed from the EC2 console.
Here is an extract from console system logs:
<13>Jun 15 09:47:24 user-data: Running handlers:
<13>Jun 15 09:47:24 user-data: Running handlers complete
<13>Jun 15 09:47:24 user-data: Chef Client finished, 3/3 resources updated in 05 seconds
<13>Jun 15 09:47:24 user-data: + popd
<13>Jun 15 09:47:24 user-data: /tmp
<13>Jun 15 09:47:24 user-data: + '[' '!' -f /opt/parallelcluster/.bootstrapped ']'
<13>Jun 15 09:47:24 user-data: + cfn-signal --exit-code=0 '--reason=ComputeServer setup complete' --stack=*** --role=*** --resource=ComputeFleet --region=us-east-2

Remove polling of WaitCondition from compute nodes
This was introduced as an optimization to let the compute fleet start before the master had totally completed its bootstrap.
The optimization was relying on the CloudFormation API that has a very low TPS, hence it was limiting the scaling speed when hundreds of nodes are launched at once.
Dropping it for now. If we want to re-introduce this the status of the master node needs to be fetched from a more scalable source.

Increase MasterServer and ComputeFleet timeout to 60 minutes
Increase the provisioning timeout to account for long running user-data.

Testing
Executed the following integ tests: cfn-init cloudwatch_logging dcv disable_hyperthreading efa slurm sge torque awsbatch spot update ebs efs fsx_lustre raid

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

Merging #1826 into develop will decrease coverage by 0.24%.
The diff coverage is 11.90%.

@@             Coverage Diff             @@
##           develop    #1826      +/-   ##
===========================================
- Coverage    54.58%   54.33%   -0.25%
===========================================
  Files           28       28
  Lines         4421     4419       -2
===========================================
- Hits          2413     2401      -12
- Misses        2008     2018      +10

Impacted Files
Coverage Δ

cli/pcluster/utils.py
49.40% <9.52%> (+1.55%)
:arrow_up:

cli/pcluster/commands.py
19.44% <14.28%> (-0.03%)
:arrow_down:

cli/pcluster/config/param_types.py
94.12% <0.00%> (-1.87%)
:arrow_down:

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 7cfc2a0...6e9bc1f. Read the comment docs.

Does the upload-cfn-template.py utility need to be updated as well?

yes! done


feat: add compatibility with Expo SDK 47

Update @expo/config-plugins to a version compatible with Expo SDK 47

Closes #3

They should not. I made sure to merge in a freshly pulled main branch after his changes before I changed versions for @expo/config-plugins and eslint and ran yarn.


Code analysis workflow added

Description
This workflow automates the analysis and validation of Dart code along with package management for Flutter projects. It ensures code quality and adherence to standards before merging pull requests into the main branch.
Workflow Overview

Triggers: The workflow runs on pull requests targeting the main branch and on pushes to the main branch.
Jobs: The main job named "Flutter Analyze" executes various checks and validations.
Steps: Each step performs specific tasks to ensure code quality and consistency.

Workflow Steps

Checkout Code: Fetches the latest codebase from the repository.

Setup Flutter: Configures the Flutter environment using the stable channel.

Verify Flutter Installation: Checks and displays the installed Flutter version using flutter doctor.

Check Pub Dependencies: Retrieves and validates project dependencies using flutter pub get.

Run Dart Analyze: Conducts static analysis of Dart code using dart analyze, marking errors and warnings as fatal.

Check Code Formatting: Verifies code formatting using dart format.

Check Pub.dev Requirements: Simulates publishing the package to pub.dev to ensure all requirements are met.

Block Merge if Checks Fail: If any of the previous steps fail, the workflow blocks the merge of the pull request, ensuring code quality before integration.

Branch Protection
To enhance code safety, the main branch need to be protected to prevent merging pull requests if the workflow fails. This ensures that only code meeting quality standards can be merged into the main branch.
Type of Change

[ ] ✨ New feature (non-breaking change which adds functionality)
[ ] 🛠 Bug fix (non-breaking change which fixes an issue)
[ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🧹 Code refactor
[ ] ✅ Build configuration change
[ ] 📝 Documentation
[x] 🗑 Chore

Thank you!


Creating security.md

Provides information about the security policy of the website.
#1138
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Fixes:  #(issue no.)
Description
[Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.]

Type of PR

[ ] Bug fix
[ ] Feature enhancement
[ ] Documentation update
[ ] Other (specify): _______________

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes. Make sure to attach before & after screenshots in your PR.]
Checklist:

[ ] I have made this change from my own.
[ ] I have taken help from some online resources.
[ ] My code follows the style guidelines of this project.
[ ] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[ ] My changes generate no new warnings.
[ ] I have tested the changes thoroughly before submitting this pull request.
[ ] I have provided relevant issue numbers and screenshots after making the changes.

@shauryaq05 Your pull request has been successfully merged! Don't stop here—continue contributing by addressing more issues and aiming to become a top contributor. Exclusive swag awaits for those who go the extra mile!
Great contribution ! 🎉


Event not loaded properly on View

Hello @richardtop
I am facing one problem in this library which is in showing in sample code attached below.
Problem is Event not loading properly i.e. if we have 5 event then it will show different number of count every refresh of this page.
Huru_Sample.zip

Looks like the integration has been made incorrectly. Please use this template for your integration, not the one in the CalendarKit repository.
https://github.com/richardtop/CalendarApp


cmd/compile: replace //go:notinheap with runtime/internal/sys.NotInHeap

//go:notinheap is the only current type pragma, and it imposes a lot of complexity and special cases on the compiler and tools. E.g., it's not captured within the go/types or types2 type models, so users wanting to analyze code that uses it have to do a lot of effort to reconstruct this information. The reflect API wasn't updated to reject ChanOf or MapOf for notinheap types. Even the existing compiler typechecker that was extended to natively support //go:notinheap fails to handle tricky situations: https://play.golang.org/p/hYGrwJx37TN
//go:notinheap is effectively a language change, but it bypassed review by the usual language spec reviewers because it started out as a runtime-only hack. It was then extended to be used by cmd/cgo and be accessible to user packages (as a necessity of cmd/cgo's design), but again skipped language review.
We already have what are effectively type pragmas in the form of "noCompare" (where embedding a non-comparable, zero-size type makes the enclosing struct non-comparable too) and "noCopy" (where cmd/vet can detect value copies of types that directly contain an element of type "noCopy"). However, they work much more robustly and interoperate with existing tooling better because they rely on struct field embedding, rather than introducing actual type pragmas. I think //go:notinheap should be modified to work similarly.
I propose the following:

Add a new NotInHeap type to runtime/internal/sys. Its initial definition would be:
type NotInHeap struct { _ nih }

//go:notinheap
type nih struct{}

Disallow all other use of //go:notinheap, and maybe eventually get rid of it altogether by turning sys.NotInHeap into a compiler intrinsic type like unsafe.Pointer.

Change existing runtime types that use //go:notinheap to add a sys.NotInHeap-typed field instead. The handful of defined types that are marked //go:notinheap but aren't already a struct type (i.e., debugLogBuf, checkmarksMap, gcBits) would need to be adjusted to use a struct wrapper.

Add a new runtime/cgo.Incomplete type with the definition: type Incomplete struct { _ sys.NotInHeap }. Change cmd/cgo to emit type _Ctype_struct_foo cgo.Incomplete instead of using struct{} with a //go:notinheap directive.

Disallow the reintroduction of type pragmas, even for runtime use, without proposal review. (I have no objection to runtime-internal intrinsic types though.)

Incidentally, this is also the approach I took in implementing https://go-review.googlesource.com/c/go/+/308971 as a proof of concept of #19057 (adding intrinsic types to allow adjusting field alignment) for use within the runtime. I think it worked cleanly, and it avoided requiring the introduction of new type pragmas. Instead, it added runtime/internal/align.elemT as an intrinsic type known to the compiler with special alignment semantics.

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

This is undocumented, so it is probably OK to remove.
If we replace it with internal-only things then no one will be able to see it.
I don't think we need an exported cgo.Incomplete - we can do whatever we need to let cgo see things others can't.
(Maybe an internal/cgo?)

One question that I didn't see discussed: It might be useful to support notinheap data structures not only for the runtime. Management of mmaped data or data in sysV shared memory comes to mind. The user current has no way in deeply pointer heavy code to detect that she got that right. It has been solved beautifully via notinheap for runtime purposes and it might be time to support it for a bit wider scope.

I don't think we need an exported cgo.Incomplete - we can do whatever we need to let cgo see things others can't.
(Maybe an internal/cgo?)

This is ok by me. Does it fit cleanly into cmd/go's model to have internal packages that user packages can't directly import, but that the cgo-rewritten code can access?

One question that I didn't see discussed: It might be useful to support notinheap data structures not only for the runtime.

I think this is an orthogonal concern. I'm more concerned here that type directives are very difficult to implement correctly, as evidenced by how many corner cases are still mishandled by cmd/compile.
It's a secondary concern that we accidentally exposed the feature to end users. If we decide to intentionally export a NotInHeap type for users though, I think that's fine. But that should probably be a separate proposal.

Does it fit cleanly into cmd/go's model to have internal packages that user packages can't directly import, but that the cgo-rewritten code can access?

I don't think it does. I think we would end up in a weird state in which packages that import "C" can mysteriously also import "internal/cgo" without a diagnosed error. That doesn't seem appreciably better to me than exporting a runtime/cgo.Incomplete marker type.

I think it would be straightforward for cmd/go to pass a special option to the compiler when compiling Go files generated by cgo.  Then we could use a special builtin notinheap (or unsafe.Notiheap) that is only available when that flag is passed.  We already compile the runtime with special compiler flags, so we could make it available there as well.  The downside is that other people can pass the compiler flag as well.
Alternatively, if we put the type into runtime/cgo we should consider @nightlyone 's suggestion and pick a name ad documentation that permits anybody to use the new type if they so desire.  I think this is a fairly specialized use case and I wouldn't ordinary argue in favor of supporting that use case, but if we need it anyhow for cgo then perhaps it will do little harm to let other people use it as well.

If cgo supports it at all, then it seems to me that there is a trivial way for everyone else to use it when cgo is enabled too:
package clever

/*
typedef struct Incomplete incomplete;
*/
import "C"

type NotInHeap {
	_ C.incomplete
}

So I'm not sure that it's worth going to a lot of effort to prevent external users from making their own not-in-Go-heap types.

Good point.

There's still a distinction of what semantics we're exporting. The semantics of go:notinheap have changed a few times, but since it's internal it hasn't been a problem to just shape it as our needs have changed. Likewise, while @bcmills is right that there's nothing stopping users from using an incomplete type from C to achieve the same effect, the semantics of that are that you're using an incomplete C type. Those happens to overlap in the current implementation, but the intent is different.
So I'm not convinced by that particular argument that we should export this type.

FWIW, the reason I suggested runtime/cgo.Incomplete initially is so we'd have a name specifically for the semantics of incomplete C types. Immediately, this would be in terms of NotInHeap, because this is how we implement them today; but I think longer term we probably should distinguish incomplete C types by not allowing them in any context that depends on their size (e.g., unsafe.Sizeof, struct field types, array element types).

We discussed this in the runtime/compiler meeting today (sorry you weren't there @mdempsky !) and everyone's fine with the general idea of replacing the type pragma with an embedded type. I'd like to see what the current non-struct notinheap types wind up looking like, but that's a minor concern (@mknyszek thinks they'd probably be better off as struct types anyway).
We realized we were all pretty unclear on why exactly mmap-using user code would want something like notinheap. We use it in the runtime for types that must not have write barriers, but (performance aside) there's no such restriction in user code.
(FWIW, some history of go:notinheap: There are parts of the runtime, like the scheduler, that need to manipulate pointer-based data structures but cannot have write barriers because write barriers depend on resources that don't exist in these core parts of the runtime. We had used unsafe casting shenanigans to carefully avoid write barriers in this code, but I felt that was getting too annoying and unmaintainable, so I added go:notinheap as an expedient solution for a small number of core types in the runtime. It was kind of messy and incomplete, but it was still an improvement over the status quo, and since it was only for internal use it didn't have to be 100% complete. But from there it sort of grew, especially when Keith realized it had almost the exact semantics we needed to solve a problem in cgo. And now it's been through a bunch of awkward contortions and I'm happy someone is rethinking it. :) )

Will record this as "discussion ongoing", but it also sounds like a prototype is needed before making a decision. If that will take a while we can also move this to Proposal-Hold until the prototype is ready.

At least for my minor concern, I don't need to see a whole prototype, I just wanted confirmation that it's not a problem to convert the non-struct types to struct types (which would probably only take a few minutes).
I don't think we should expose a user-visible type for this at this time. Maybe we will in the future, but I think that's outside the scope of this proposal.
For cgo.Incomplete, it would be nice if we could find a way to not export that, but at least Ian and I are fine with just making that an exported type in runtime/cgo.

I was following this and was interested in where this might be used outside the runtime, so did sourcegraph to do a survey.
A few cases stuck out:

gccgoimporter appears to use it, at least in its tests.
A kernel written in Go appears to use it fairly extensively (https://github.com/icexin/eggos).
inet.af/wf uses it for a few types (https://github.com/inetaf/wf/blob/main/types.go as of https://github.com/inetaf/wf/commit/96105dd4ea2d76a1dcd12dc579c2f5fd0fc92aea).

The other cases seem to be misuses, but I personally don't know enough to say.

No change in consensus, so accepted. 🎉
This issue now tracks the work of implementing the proposal.
— rsc for the proposal review group

To add to @zikaeroh's list, I've used this to implement off-heap allocators. The two driving factors were similar to the runtime's, I think: (1) performance (write barrier made things too slow), and (2) preventing accidental Go allocation. In my case, using cgo was not an option.

What'll happen to projects which happen to use this already? With an updated sourcegraph search, there are still a couple of users. Will this code still build under Go 1.20? Most of these are projects building OSs or init systems, so probably wouldn't want to bring in cgo (and I'm half curious if some versions of inet.af/wf will become unbuildable; but, it's a part of the tailscale stack, so I'm assuming they'd quickly fix things). Or are all of these already misusing the directive?

Or are all of these already misusing the directive?

I'm leaning to this, since when //go:notinheap is a runtime only directive.
Also, go pragma is not part of the language or Go 1 compatibility promise.

Or are all of these already misusing the directive?

The only supported directives are documented at https://pkg.go.dev/cmd/compile#hdr-Compiler_Directives. The //go:notinheap directive has only ever been documented within the runtime's internal development guide.

What'll happen to projects which happen to use this already?

I'm open to making //go:notinheap into either an error (how we normally handle misused runtime directives) or a no-op (how we handle unknown directives) when appearing in user code. I'm also open to making that contingent upon whether the package is compiled with -lang=go1.19 (or below) vs -lang=go1.20 (or above).

All good; IIRC @cuonglm's CL stack removes the directive entirely, so the code still compiles as the directive is just an unrecognized one (but, I guess won't behave the same anymore). I don't have a vested interest in how you'd like to do this, I was just trying to point it out so nobody's surprised when the change does come 😅

A late testimony that this will make my life harder: inet.af/wf interacts with the windows filtering platform through cgo, which unusually requires that structs passed to it be allocated using a specific allocator in the win32 API. I used //go:notinheap as a defensive measure to prevent any accidental allocation of those structs on the Go heap, rather than through the appropriate allocator.
Doing this has saved me from very mysterious crashes and misbehaviors several times during the development of the library. It now sounds like that major footgun is back, and I have no recourse. "Sorry, only we get to have nice things" is pretty cold comfort :(
In the original proposal, it sounded like there was going to be an intrinsic that I could use in lieu of the removed annotation. However, https://go-review.googlesource.com/c/go/+/421878 appears to keep all such intrinsics completely private. Consider this a plea to keep having some way of expressing "this type must not exist on the Go heap" for people doing strange cgo things.

@danderson If you already use cgo, then you can do what @bcmills suggested https://github.com/golang/go/issues/46731#issuecomment-897134472
There's also runtime/cgo.Incomplete, but it's not available on Windows.

A late testimony that this will make my life harder: inet.af/wf interacts with the windows filtering platform through cgo, which unusually requires that structs passed to it be allocated using a specific allocator in the win32 API. I used //go:notinheap as a defensive measure to prevent any accidental allocation of those structs on the Go heap, rather than through the appropriate allocator.

Thanks for the use case. To clarify: you're depending on //go:notinheap only as a safety aid during development? That is, if you were to strip out all the //go:notinheap directives right now, would your project continue to build and run correctly? You're not depending on how it affects pointer semantics at runtime (e.g., to bypass cgo's pointer passing checks)?

Doing this has saved me from very mysterious crashes and misbehaviors several times during the development of the library. It now sounds like that major footgun is back, and I have no recourse.

It should be possible to instead declare your own Win32Allocated marker type, embed it in structs instead of adding the //go:notinheap directive, and write a unit test that uses x/tools/go/ssa to check for places where this type would be allocated on the Go heap (e.g., in ssa.Alloc or ssa.Make* operations). Not as convenient as just using an existing compiler directive I admit, but I think not unreasonable either.

"Sorry, only we get to have nice things" is pretty cold comfort :(

Like I said last August: "If we decide to intentionally export a NotInHeap type for users though, I think that's fine. But that should probably be a separate proposal."
If you think the x/tools/go/ssa solution I described above is insufficient for your use case, I encourage submitting a proposal.

Thanks for the use case. To clarify: you're depending on //go:notinheap only as a safety aid during development? That is, if you were to strip out all the //go:notinheap directives right now, would your project continue to build and run correctly? You're not depending on how it affects pointer semantics at runtime (e.g., to bypass cgo's pointer passing checks)?

To the best of my knowledge, that is accurate. That is, if I'm relying on anything other than "&foo{...} and equivalents should not compile", that's unintentional and unwanted on my part.

It should be possible to instead declare your own Win32Allocated marker type, embed it in structs instead of adding the //go:notinheap directive, and write a unit test that uses x/tools/go/ssa to check for places where this type would be allocated on the Go heap (e.g., in ssa.Alloc or ssa.Make* operations). Not as convenient as just using an existing compiler directive I admit, but I think not unreasonable either.

TIL x/tools/go/ssa, thanks. Its documentation warns that anything I write against it is likely to break in future, which feels like I'm setting myself up for another round of the same thing in future, but it's at least something I can do today.

Like I said last August: "If we decide to intentionally export a NotInHeap type for users though, I think that's fine. But that should probably be a separate proposal."
If you think the x/tools/go/ssa solution I described above is insufficient for your use case (in particular, if you do depend on the changed pointer semantics implied by //go:notinheap), I encourage submitting a proposal.

Apologies, I misread the original proposal and thought the proposal was for NotInHeap to be exported, and that it got unexported later on in discussion. Assuming my use case is too niche to support in the compiler directly, x/tools/go/ssa is probably the right balance.

Proof-of-concept implementation of an ssa-based checker: https://github.com/mdempsky/notinheap
I'll leave it to others to polish into a fully usable package and checker.

TIL x/tools/go/ssa, thanks. Its documentation warns that anything I write against it is likely to break in future, which feels like I'm setting myself up for another round of the same thing in future, but it's at least something I can do today.

Ack. For what it's worth, I don't think the API has changed backwards incompatibly in a long time (if ever).


Check for existence of remote file fails after updating AWS packages

Laravel Version: 5.4.25
PHP Version: 7.1
Database Driver & Version: MySQL, 14.14

Description:
I just did a composer update, updating aws/aws-sdk-php (3.29.0 => 3.29.1) and league/flysystem-aws-s3-v3 (1.0.15 => 1.0.16) in the process. Now it seems that checking for the existence of a remote file gives the wrong result.
Steps To Reproduce:
For a file that was successfully uploaded to my S3 bucket (prior to updating) the following command returns false:
app('filesystem')->disk('s3')->exists($path);

although
app('filesystem')->disk('s3')->url($path);

returns a valid URL that loads my image just fine.

Seems to be fixed after updating aws-sdk-php to version 3.29.2


Fix validation error for EthereumAddressField serializer

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
13 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-0.03%) to 89.765%

Files with Coverage Reduction
New Missed Lines
%

gnosis/eth/oracles/oracles.py
2
89.27%

gnosis/eth/typing.py
2
83.33%

gnosis/protocol/gnosis_protocol_api.py
2
89.25%

gnosis/safe/api/relay_service_api.py
2
52.27%

gnosis/safe/safe_tx.py
2
90.53%

gnosis/eth/ethereum_client.py
3
86.91%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
3359

Relevant Lines:
3742

💛  - Coveralls


Update local-conformance-2_0.v2.json

Fixing up the JSON to mock a API response as per the 1.2 JSON

thanks @openfin-johans !

@gaganahluwalia can you merge this if you're happy with it


set min and max range  dynamically

How to set min and max range for a range slider dynamically

Is it possible to dynamically set the min and max of dot-options?

use v-model="currentValue" in your component.
In your data return some default value like
data() {
return {
currentValue: [
data[0],
data[data.length - 1]
],
}
}
data can be an array that you pass as a prop to your component. Of course, you can also edit your data in your mounted function if you want to further extend/change your dynamic data.
I hope I understood your question correctly.


Another maintainer

I have recently sold off my KEF LS50W speaker and because of this, I will probably not maintain this repository. If someone wants to maintain this repository, please write here.

You could mention aiokef in the README.md, which is build from pykef but has 99% of the code rewritten, is more fully-featured, and async.
I plan to maintain it as long as I have KEF speakers (and maybe even later) 😄


Added new benchmark 'amartin'

This implementation runs the fastest in 6 of the 8 benchmarks (sse2 is faster in 2 benchmarks).
Based on code here:
https://github.com/amdn/itoa_ljust

Thank you

Hello

Milo
,
I've enjoyed working in itoa-benchmark, you did a great job, I really like
the way you display results.
Thank you for committing my pull request.
As you may have seen, my implementation is based on Google protocol
buffers (and I retained their original copyright) for proper attribution.
I've commented on
https://github.com/miloyip/itoa-benchmark/issues/6
and indicate that amartin.cpp is derived from Google protocol buffer, so
you might consider closing that issue.
Thank you,
Arturo
On Mar 20, 2016 8:30 PM, "Milo Yip"<EMAIL_ADDRESS>wrote:

Thank you
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/miloyip/itoa-benchmark/pull/13#issuecomment-199079878

OK. Thanks.
I will update the graphic results later as well.


[PSM Interop] Fix the issue with URL Map test suite not cleaning up failed test client

tearDownClass is not executed when setUpClass failed. In URL Map test suite, this leads to a test client that failed to start not being cleaned up.
This PR change the URL Map test suite to register a custom addClassCleanup callback, instead of relying on the tearDownClass. Unlike tearDownClass, cleanup callbacks are executed when the setUpClass failed.
ref b/276761453

Fixed the indent, but now get random test failures in the bazel builds.  Can't set the labels to force a rerun.

Restarted the failed TSAN job (surprised it's not excluded), and started adhoc PSM Interop URL Map:

grpc/core/v1.54.x/branch/linux/grpc_xds_url_map


Obtained test accuracy lower than reported for miniImageNet

Hello , thank you for the implementation of your work. For the first stage, I used the Conv128CosineClassifier configuration. Later with Attention based 5way 1-shot training(untouched configuration), I get 55.9 on novel class and 70.3 on base class for the test set. It is lower than your report.  I wonder whether the result I got is reasonable or not?

I got same issue too, even lower. But I tested Conv64 in my test, which got novel: 55.47% and base: 67.98% for posted novel: 55.86% and base: 68.43% by the author.

Could you tell me how to get accuracyboth and accuracybase? After running the code, I only get accuracynovel_ CNF @kikyou123 @asdfqwer2015


Nightly build pick up from Git instead of SVN

[ ] Bioc-core fetch upstream remote

[ ] Merge ONLY IF version of fetch is consistent w/ bioc repository

[ ] Remote disappears?? Notify maintainer (via script) but no problem for us

Duplicates issue #9


calling append() on a ListField changes the default value

Thanks for this great package!
On object creation, where:

an attribute's Field.default has been defined, and
an attribute value is not specified in **kwargs

the object is created with this attribute value set to the Field.default.
For ListField attributes, this causes a problem, because list operations such as
append() will modify the Field.default and subsequent object creations will
behave unexpectedly.
I have included a code illustration below.
The obvious fix is to always initialize an object with a COPY of the Field.default.
from flask import Flask
from flask_mongoalchemy import MongoAlchemy

# Setup Flask
app = Flask(__name__)

# Setup MongoAlchemy
app.config.update(MONGOALCHEMY_DATABASE='issue_db')
db = MongoAlchemy(app)

# Define Item Document
class Item(db.Document):
    name = db.StringField(default='')
    colors = db.ListField(db.StringField(), default=[])

# Clear Item collection
db.session.clear_collection(Item)

# Create Documents
item1 = Item(name='Item One')
db.session.add(item1)
# item1.colors.append() modifies the Field default
item1.colors.append('red')
item1.colors.append('blue')

item2 = Item(name='Item Two')
db.session.add(item2)
db.session.flush()

# item2 is created with the modified Field default
assert item2.colors==[], 'item2.colors='+str(item2.colors)+' instead of []'

If users are looking for a temporary workaround:
item1.colors = item1.colors + ['red']  # this ensures a copy is assigned
item1.colors = item1.colors + ['blue']  # this ensures a copy is assigned

Hey @lingthio, thanks for reporting. Unfortunately, this is an issue in mongoalchemy itself. We can fix it on flask-mongoalchemy, but ideally this would be a fix upstream.


Enhancement for Korean localization [ko-KR]

Updated localization for Korean language

Love this, thanks doyoung! I think you'll have to edit the xliff file, though, not the resources.resw file. So you'll want to revert the resources.resw file and apply your changes here instead

@dpaulino Updated

Lifesaver, thanks Doyoung!


Extracting only the main content of an article

Is there any way to extract only the main text of article without e.g., image captions, Story highlights, etc.
Thank you

You can disable the image extraction by passing fetch_images=False, and not calling article.nlp(), will avoid most of the nlp processing (summary, keywords, etc):
import newspaper
article = newspaper.Article(url='http://example.com/article', fetch_images=False)
article.download()
article.parse()

print(article.text)

Does this help?

Thank you! It worked well with the pictures, but we are still getting the captions. Is there any way to download only the main text? We did not call article.nlp().
Thank you.

Only by implementing parts of article.parse() by yourself.
I'm not sure I understand your use case... why is it important that only the text is returned?

I wonder if you could give us an example of which parts of  article.parse() we could implement ourselves. We are only interested in the main text of the article, not captions, headlines and the like.
Thank you.

You mean sections inside article.text itself? or the additional data, like article.title etc.

I meant sections inside article.text itself.

Oh, sorry,  I got you wrong there... I don't think it's currently possible without some modification to the library itself.
Most of it happens here: https://github.com/codelucas/newspaper/blob/master/newspaper/outputformatters.py#L41

Thank you very much. I will take a look at that. It would be great to have the option to extract only the main text of the article.